/**
 *
 */
import Util;
import OpenApi;
import OpenApiUtil;
import EndpointUtil;

extends OpenApi;


init(config: OpenApi.Config){
  super(config);
  @endpointRule = 'central';
  
  checkConfig(config);
  @endpoint = getEndpoint('domain', @regionId, @endpointRule, @network, @suffix, @endpointMap, @endpoint);
}

function getEndpoint(productId: string, regionId: string, endpointRule: string, network: string, suffix: string, endpointMap: map[string]string, endpoint: string) throws: string{
  if (!Util.empty(endpoint)) {
    return endpoint;
  }
  
  if (!Util.isUnset(endpointMap) && !Util.empty(endpointMap[regionId])) {
    return endpointMap[regionId];
  }
  return EndpointUtil.getEndpointRules(productId, regionId, endpointRule, network, suffix);
}

model AcknowledgeTaskResultRequest {
  lang?: string(name='Lang', example='en'),
  taskDetailNo?: [ string ](name='TaskDetailNo', description='This parameter is required.', example='2659c29493e94416b297a7691340ccc4'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model AcknowledgeTaskResultResponseBody = {
  requestId?: string(name='RequestId', example='D6CB3623-4726-4947-AC2B-2C6E673B447C'),
  result?: int32(name='Result', example='1'),
}

model AcknowledgeTaskResultResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AcknowledgeTaskResultResponseBody(name='body'),
}

/**
 * @summary 确认任务结果
 *
 * @param request AcknowledgeTaskResultRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return AcknowledgeTaskResultResponse
 */
async function acknowledgeTaskResultWithOptions(request: AcknowledgeTaskResultRequest, runtime: Util.RuntimeOptions): AcknowledgeTaskResultResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.taskDetailNo)) {
    query['TaskDetailNo'] = request.taskDetailNo;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'AcknowledgeTaskResult',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 确认任务结果
 *
 * @param request AcknowledgeTaskResultRequest
 * @return AcknowledgeTaskResultResponse
 */
async function acknowledgeTaskResult(request: AcknowledgeTaskResultRequest): AcknowledgeTaskResultResponse {
  var runtime = new Util.RuntimeOptions{};
  return acknowledgeTaskResultWithOptions(request, runtime);
}

model BatchFuzzyMatchDomainSensitiveWordRequest {
  keyword?: string(name='Keyword', description='This parameter is required.', example='example.com,aliyundoc.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model BatchFuzzyMatchDomainSensitiveWordResponseBody = {
  requestId?: string(name='RequestId', example='C560A803-B975-481D-A66B-A4395EA863A1'),
  sensitiveWordMatchResultList?: {
    sensitiveWordMatchResult?: [ 
    {
      exist?: boolean(name='Exist', example='true'),
      keyword?: string(name='Keyword', example='example.com,aliyundoc.com'),
      matchedSentiveWords?: {
        matchedSensitiveWord?: [ 
        {
          word?: string(name='Word', example='xxx'),
        }
      ](name='MatchedSensitiveWord')
      }(name='MatchedSentiveWords'),
    }
  ](name='SensitiveWordMatchResult')
  }(name='SensitiveWordMatchResultList'),
}

model BatchFuzzyMatchDomainSensitiveWordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: BatchFuzzyMatchDomainSensitiveWordResponseBody(name='body'),
}

/**
 * @summary 通过关键字进行批量模糊匹配
 *
 * @param request BatchFuzzyMatchDomainSensitiveWordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return BatchFuzzyMatchDomainSensitiveWordResponse
 */
async function batchFuzzyMatchDomainSensitiveWordWithOptions(request: BatchFuzzyMatchDomainSensitiveWordRequest, runtime: Util.RuntimeOptions): BatchFuzzyMatchDomainSensitiveWordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.keyword)) {
    query['Keyword'] = request.keyword;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'BatchFuzzyMatchDomainSensitiveWord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 通过关键字进行批量模糊匹配
 *
 * @param request BatchFuzzyMatchDomainSensitiveWordRequest
 * @return BatchFuzzyMatchDomainSensitiveWordResponse
 */
async function batchFuzzyMatchDomainSensitiveWord(request: BatchFuzzyMatchDomainSensitiveWordRequest): BatchFuzzyMatchDomainSensitiveWordResponse {
  var runtime = new Util.RuntimeOptions{};
  return batchFuzzyMatchDomainSensitiveWordWithOptions(request, runtime);
}

model CancelDomainVerificationRequest {
  actionType?: string(name='ActionType', description='The action type. Valid values:

*   **DOMAINAUDIT**: review a domain name review.
*   **AUDITCONTACT**: review a contact.

This parameter is required.', example='AUDITCONTACT'),
  instanceId?: string(name='InstanceId', description='Thee instance ID of the domain name. You can call the [QueryDomainList](https://help.aliyun.com/document_detail/67712.html) operation to query the instance ID.

This parameter is required.', example='S2019270W570xxxx'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client. Set the value to **127.0.0.1**.', example='127.0.0.1'),
}

model CancelDomainVerificationResponseBody = {
  requestId?: string(name='RequestId', description='The request ID.', example='0AC0AF67-D303-4EB9-B20E-B4D4B2C3F97B'),
}

model CancelDomainVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CancelDomainVerificationResponseBody(name='body'),
}

/**
 * @summary Cancels real-name verification for a domain name.
 *
 * @param request CancelDomainVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CancelDomainVerificationResponse
 */
async function cancelDomainVerificationWithOptions(request: CancelDomainVerificationRequest, runtime: Util.RuntimeOptions): CancelDomainVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.actionType)) {
    query['ActionType'] = request.actionType;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CancelDomainVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary Cancels real-name verification for a domain name.
 *
 * @param request CancelDomainVerificationRequest
 * @return CancelDomainVerificationResponse
 */
async function cancelDomainVerification(request: CancelDomainVerificationRequest): CancelDomainVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return cancelDomainVerificationWithOptions(request, runtime);
}

model CancelOperationAuditRequest {
  auditRecordId?: long(name='AuditRecordId', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
}

model CancelOperationAuditResponseBody = {
  requestId?: string(name='RequestId', example='9KFCF6F8-243C-40EC-8035-4B12KKFD7D90'),
}

model CancelOperationAuditResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CancelOperationAuditResponseBody(name='body'),
}

/**
 * @summary 取消审核
 *
 * @param request CancelOperationAuditRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CancelOperationAuditResponse
 */
async function cancelOperationAuditWithOptions(request: CancelOperationAuditRequest, runtime: Util.RuntimeOptions): CancelOperationAuditResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditRecordId)) {
    query['AuditRecordId'] = request.auditRecordId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CancelOperationAudit',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 取消审核
 *
 * @param request CancelOperationAuditRequest
 * @return CancelOperationAuditResponse
 */
async function cancelOperationAudit(request: CancelOperationAuditRequest): CancelOperationAuditResponse {
  var runtime = new Util.RuntimeOptions{};
  return cancelOperationAuditWithOptions(request, runtime);
}

model CancelQualificationVerificationRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  qualificationType?: string(name='QualificationType', description='This parameter is required.', example='knet'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CancelQualificationVerificationResponseBody = {
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
}

model CancelQualificationVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CancelQualificationVerificationResponseBody(name='body'),
}

/**
 * @param request CancelQualificationVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CancelQualificationVerificationResponse
 */
async function cancelQualificationVerificationWithOptions(request: CancelQualificationVerificationRequest, runtime: Util.RuntimeOptions): CancelQualificationVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.qualificationType)) {
    query['QualificationType'] = request.qualificationType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CancelQualificationVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CancelQualificationVerificationRequest
 * @return CancelQualificationVerificationResponse
 */
async function cancelQualificationVerification(request: CancelQualificationVerificationRequest): CancelQualificationVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return cancelQualificationVerificationWithOptions(request, runtime);
}

model CancelTaskRequest {
  lang?: string(name='Lang', example='en'),
  taskNo?: string(name='TaskNo', description='This parameter is required.', example='7f217ae0-61f5-42e2-a1c3-42bad0124****'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CancelTaskResponseBody = {
  requestId?: string(name='RequestId', example='010E55C9-C64C-4C85-9BB2-7C225ADA6C86'),
}

model CancelTaskResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CancelTaskResponseBody(name='body'),
}

/**
 * @param request CancelTaskRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CancelTaskResponse
 */
async function cancelTaskWithOptions(request: CancelTaskRequest, runtime: Util.RuntimeOptions): CancelTaskResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.taskNo)) {
    query['TaskNo'] = request.taskNo;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CancelTask',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CancelTaskRequest
 * @return CancelTaskResponse
 */
async function cancelTask(request: CancelTaskRequest): CancelTaskResponse {
  var runtime = new Util.RuntimeOptions{};
  return cancelTaskWithOptions(request, runtime);
}

model ChangeResourceGroupRequest {
  lang?: string(name='Lang', example='zh'),
  newResourceGroupId?: string(name='NewResourceGroupId', description='This parameter is required.', example='rg-aek2tcx7os7bkmq'),
  resourceId?: string(name='ResourceId', description='This parameter is required.', example='S20227H17A561968'),
  resourceType?: string(name='ResourceType', example='Domain'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model ChangeResourceGroupResponseBody = {
  requestId?: string(name='RequestId', example='4EA05A10-D4BC-47EA-AD9E-370A46BB4FB9'),
  result?: string(name='Result', example='true'),
}

model ChangeResourceGroupResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ChangeResourceGroupResponseBody(name='body'),
}

/**
 * @summary 修改实例所在资源组
 *
 * @param request ChangeResourceGroupRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ChangeResourceGroupResponse
 */
async function changeResourceGroupWithOptions(request: ChangeResourceGroupRequest, runtime: Util.RuntimeOptions): ChangeResourceGroupResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.newResourceGroupId)) {
    query['NewResourceGroupId'] = request.newResourceGroupId;
  }
  if (!Util.isUnset(request.resourceId)) {
    query['ResourceId'] = request.resourceId;
  }
  if (!Util.isUnset(request.resourceType)) {
    query['ResourceType'] = request.resourceType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ChangeResourceGroup',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 修改实例所在资源组
 *
 * @param request ChangeResourceGroupRequest
 * @return ChangeResourceGroupResponse
 */
async function changeResourceGroup(request: ChangeResourceGroupRequest): ChangeResourceGroupResponse {
  var runtime = new Util.RuntimeOptions{};
  return changeResourceGroupWithOptions(request, runtime);
}

model CheckDomainRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='test**.xin'),
  feeCommand?: string(name='FeeCommand', example='create'),
  feeCurrency?: string(name='FeeCurrency', example='USD'),
  feePeriod?: int32(name='FeePeriod', example='1'),
  lang?: string(name='Lang', example='en'),
}

model CheckDomainResponseBody = {
  avail?: string(name='Avail', example='1'),
  domainName?: string(name='DomainName', example='test**.xin'),
  dynamicCheck?: boolean(name='DynamicCheck', example='true'),
  premium?: string(name='Premium', example='true'),
  price?: long(name='Price', example='1286'),
  reason?: string(name='Reason', example='In use'),
  requestId?: string(name='RequestId', example='BA7A4FD4-EB9A-4A20-BB0C-9AEB15634DC1'),
  staticPriceInfo?: {
    priceInfo?: [ 
    {
      action?: string(name='action'),
      money?: double(name='money'),
      period?: long(name='period'),
    }
  ](name='PriceInfo')
  }(name='StaticPriceInfo'),
}

model CheckDomainResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckDomainResponseBody(name='body'),
}

/**
 * @param request CheckDomainRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckDomainResponse
 */
async function checkDomainWithOptions(request: CheckDomainRequest, runtime: Util.RuntimeOptions): CheckDomainResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.feeCommand)) {
    query['FeeCommand'] = request.feeCommand;
  }
  if (!Util.isUnset(request.feeCurrency)) {
    query['FeeCurrency'] = request.feeCurrency;
  }
  if (!Util.isUnset(request.feePeriod)) {
    query['FeePeriod'] = request.feePeriod;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckDomain',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CheckDomainRequest
 * @return CheckDomainResponse
 */
async function checkDomain(request: CheckDomainRequest): CheckDomainResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkDomainWithOptions(request, runtime);
}

model CheckDomainSunriseClaimRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CheckDomainSunriseClaimResponseBody = {
  claimKey?: string(name='ClaimKey', example='2017092100/8/2/1/kDfu9htHGEx_y-LJ3XSlKMZ70000020001'),
  requestId?: string(name='RequestId', example='BA7A4FD4-EB9A-4A20-BB0C-9AEB15634DC1'),
  result?: int32(name='Result', example='1'),
}

model CheckDomainSunriseClaimResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckDomainSunriseClaimResponseBody(name='body'),
}

/**
 * @param request CheckDomainSunriseClaimRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckDomainSunriseClaimResponse
 */
async function checkDomainSunriseClaimWithOptions(request: CheckDomainSunriseClaimRequest, runtime: Util.RuntimeOptions): CheckDomainSunriseClaimResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckDomainSunriseClaim',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CheckDomainSunriseClaimRequest
 * @return CheckDomainSunriseClaimResponse
 */
async function checkDomainSunriseClaim(request: CheckDomainSunriseClaimRequest): CheckDomainSunriseClaimResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkDomainSunriseClaimWithOptions(request, runtime);
}

model CheckIntlFixPriceDomainStatusRequest {
  domain?: string(name='Domain', example='appp16.com'),
}

model CheckIntlFixPriceDomainStatusResponseBody = {
  module?: {
    currency?: string(name='Currency', example='USD'),
    deadDate?: long(name='DeadDate', example='1567353497'),
    domain?: string(name='Domain', example='example.com'),
    endTime?: long(name='EndTime', example='1567353497'),
    premium?: boolean(name='Premium', example='true'),
    price?: long(name='Price', example='20.00'),
    regDate?: long(name='RegDate', example='1566353497'),
  }(name='Module'),
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
}

model CheckIntlFixPriceDomainStatusResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckIntlFixPriceDomainStatusResponseBody(name='body'),
}

/**
 * @summary 校验在售国际一口价域名状态和询价
 *
 * @param request CheckIntlFixPriceDomainStatusRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckIntlFixPriceDomainStatusResponse
 */
async function checkIntlFixPriceDomainStatusWithOptions(request: CheckIntlFixPriceDomainStatusRequest, runtime: Util.RuntimeOptions): CheckIntlFixPriceDomainStatusResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domain)) {
    query['Domain'] = request.domain;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckIntlFixPriceDomainStatus',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 校验在售国际一口价域名状态和询价
 *
 * @param request CheckIntlFixPriceDomainStatusRequest
 * @return CheckIntlFixPriceDomainStatusResponse
 */
async function checkIntlFixPriceDomainStatus(request: CheckIntlFixPriceDomainStatusRequest): CheckIntlFixPriceDomainStatusResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkIntlFixPriceDomainStatusWithOptions(request, runtime);
}

model CheckMaxYearOfServerLockRequest {
  checkAction?: string(name='CheckAction', description='This parameter is required.', example='activate'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CheckMaxYearOfServerLockResponseBody = {
  maxYear?: int32(name='MaxYear', example='10'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
}

model CheckMaxYearOfServerLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckMaxYearOfServerLockResponseBody(name='body'),
}

/**
 * @param request CheckMaxYearOfServerLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckMaxYearOfServerLockResponse
 */
async function checkMaxYearOfServerLockWithOptions(request: CheckMaxYearOfServerLockRequest, runtime: Util.RuntimeOptions): CheckMaxYearOfServerLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.checkAction)) {
    query['CheckAction'] = request.checkAction;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckMaxYearOfServerLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CheckMaxYearOfServerLockRequest
 * @return CheckMaxYearOfServerLockResponse
 */
async function checkMaxYearOfServerLock(request: CheckMaxYearOfServerLockRequest): CheckMaxYearOfServerLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkMaxYearOfServerLockWithOptions(request, runtime);
}

model CheckProcessingServerLockApplyRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  feePeriod?: int32(name='FeePeriod', example='1'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CheckProcessingServerLockApplyResponseBody = {
  exists?: boolean(name='Exists', example='true'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
}

model CheckProcessingServerLockApplyResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckProcessingServerLockApplyResponseBody(name='body'),
}

/**
 * @param request CheckProcessingServerLockApplyRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckProcessingServerLockApplyResponse
 */
async function checkProcessingServerLockApplyWithOptions(request: CheckProcessingServerLockApplyRequest, runtime: Util.RuntimeOptions): CheckProcessingServerLockApplyResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.feePeriod)) {
    query['FeePeriod'] = request.feePeriod;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckProcessingServerLockApply',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CheckProcessingServerLockApplyRequest
 * @return CheckProcessingServerLockApplyResponse
 */
async function checkProcessingServerLockApply(request: CheckProcessingServerLockApplyRequest): CheckProcessingServerLockApplyResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkProcessingServerLockApplyWithOptions(request, runtime);
}

model CheckTransferInFeasibilityRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  transferAuthorizationCode?: string(name='TransferAuthorizationCode', example='test'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model CheckTransferInFeasibilityResponseBody = {
  canTransfer?: boolean(name='CanTransfer', example='false'),
  code?: string(name='Code', example='CheckTransferResult.DomainTransferProhibited'),
  message?: string(name='Message', example='This domain name is in transfer prohibited status, so it cannot be transferred. You can contact your original registrar to change its status.'),
  productId?: string(name='ProductId', example='2a'),
  requestId?: string(name='RequestId', example='FC0D6B89-2353-4D64-BD80-6606A7DBD7C1'),
}

model CheckTransferInFeasibilityResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckTransferInFeasibilityResponseBody(name='body'),
}

/**
 * @param request CheckTransferInFeasibilityRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckTransferInFeasibilityResponse
 */
async function checkTransferInFeasibilityWithOptions(request: CheckTransferInFeasibilityRequest, runtime: Util.RuntimeOptions): CheckTransferInFeasibilityResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.transferAuthorizationCode)) {
    query['TransferAuthorizationCode'] = request.transferAuthorizationCode;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CheckTransferInFeasibility',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request CheckTransferInFeasibilityRequest
 * @return CheckTransferInFeasibilityResponse
 */
async function checkTransferInFeasibility(request: CheckTransferInFeasibilityRequest): CheckTransferInFeasibilityResponse {
  var runtime = new Util.RuntimeOptions{};
  return checkTransferInFeasibilityWithOptions(request, runtime);
}

model ConfirmTransferInEmailRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='abc.com'),
  email?: string(name='Email', description='This parameter is required.', example='test@test.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model ConfirmTransferInEmailResponseBody = {
  failList?: {
    failDomain?: [ string ](name='FailDomain')
  }(name='FailList'),
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  successList?: {
    successDomain?: [ string ](name='SuccessDomain')
  }(name='SuccessList'),
}

model ConfirmTransferInEmailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ConfirmTransferInEmailResponseBody(name='body'),
}

/**
 * @param request ConfirmTransferInEmailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ConfirmTransferInEmailResponse
 */
async function confirmTransferInEmailWithOptions(request: ConfirmTransferInEmailRequest, runtime: Util.RuntimeOptions): ConfirmTransferInEmailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ConfirmTransferInEmail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request ConfirmTransferInEmailRequest
 * @return ConfirmTransferInEmailResponse
 */
async function confirmTransferInEmail(request: ConfirmTransferInEmailRequest): ConfirmTransferInEmailResponse {
  var runtime = new Util.RuntimeOptions{};
  return confirmTransferInEmailWithOptions(request, runtime);
}

model CreateIntlFixedPriceDomainOrderRequest {
  autoPay?: boolean(name='AutoPay', example='true'),
  contactId?: long(name='ContactId', example='13350500'),
  domain?: string(name='Domain', example='appp16.com'),
  expectedPrice?: long(name='ExpectedPrice', example='58.00'),
}

model CreateIntlFixedPriceDomainOrderResponseBody = {
  module?: {
    domain?: string(name='Domain', example='example.com'),
    orderNo?: string(name='OrderNo', example='31199295f2074ce895645d386cb2****'),
    payPrice?: long(name='PayPrice', example='100.00'),
    payUrl?: string(name='PayUrl', example='https://'),
  }(name='Module'),
  requestId?: string(name='RequestId', example='E879DC07-38EE-4408-9F33-73B30CD965CD'),
}

model CreateIntlFixedPriceDomainOrderResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CreateIntlFixedPriceDomainOrderResponseBody(name='body'),
}

/**
 * @summary 创建国际一口价订单
 *
 * @param request CreateIntlFixedPriceDomainOrderRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return CreateIntlFixedPriceDomainOrderResponse
 */
async function createIntlFixedPriceDomainOrderWithOptions(request: CreateIntlFixedPriceDomainOrderRequest, runtime: Util.RuntimeOptions): CreateIntlFixedPriceDomainOrderResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.autoPay)) {
    query['AutoPay'] = request.autoPay;
  }
  if (!Util.isUnset(request.contactId)) {
    query['ContactId'] = request.contactId;
  }
  if (!Util.isUnset(request.domain)) {
    query['Domain'] = request.domain;
  }
  if (!Util.isUnset(request.expectedPrice)) {
    query['ExpectedPrice'] = request.expectedPrice;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'CreateIntlFixedPriceDomainOrder',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 创建国际一口价订单
 *
 * @param request CreateIntlFixedPriceDomainOrderRequest
 * @return CreateIntlFixedPriceDomainOrderResponse
 */
async function createIntlFixedPriceDomainOrder(request: CreateIntlFixedPriceDomainOrderRequest): CreateIntlFixedPriceDomainOrderResponse {
  var runtime = new Util.RuntimeOptions{};
  return createIntlFixedPriceDomainOrderWithOptions(request, runtime);
}

model DeleteContactTemplatesRequest {
  registrantProfileIds?: string(name='RegistrantProfileIds', description='This parameter is required.'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model DeleteContactTemplatesResponseBody = {
  requestId?: string(name='RequestId', example='4D73432C-7600-4779-ACBB-C3B5CA145D32'),
}

model DeleteContactTemplatesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteContactTemplatesResponseBody(name='body'),
}

/**
 * @summary 批量删除联系人模板
 *
 * @param request DeleteContactTemplatesRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteContactTemplatesResponse
 */
async function deleteContactTemplatesWithOptions(request: DeleteContactTemplatesRequest, runtime: Util.RuntimeOptions): DeleteContactTemplatesResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.registrantProfileIds)) {
    query['RegistrantProfileIds'] = request.registrantProfileIds;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'DeleteContactTemplates',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 批量删除联系人模板
 *
 * @param request DeleteContactTemplatesRequest
 * @return DeleteContactTemplatesResponse
 */
async function deleteContactTemplates(request: DeleteContactTemplatesRequest): DeleteContactTemplatesResponse {
  var runtime = new Util.RuntimeOptions{};
  return deleteContactTemplatesWithOptions(request, runtime);
}

model DeleteDomainGroupRequest {
  domainGroupId?: long(name='DomainGroupId', description='This parameter is required.', example='123456'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model DeleteDomainGroupResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
}

model DeleteDomainGroupResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteDomainGroupResponseBody(name='body'),
}

/**
 * @summary 删除域名分组
 *
 * @param request DeleteDomainGroupRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteDomainGroupResponse
 */
async function deleteDomainGroupWithOptions(request: DeleteDomainGroupRequest, runtime: Util.RuntimeOptions): DeleteDomainGroupResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'DeleteDomainGroup',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 删除域名分组
 *
 * @param request DeleteDomainGroupRequest
 * @return DeleteDomainGroupResponse
 */
async function deleteDomainGroup(request: DeleteDomainGroupRequest): DeleteDomainGroupResponse {
  var runtime = new Util.RuntimeOptions{};
  return deleteDomainGroupWithOptions(request, runtime);
}

model DeleteEmailVerificationRequest {
  email?: string(name='Email', description='This parameter is required.', example='test1@aliyun.com,test2@aliyun.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model DeleteEmailVerificationResponseBody = {
  failList?: [ 
    {
      code?: string(name='Code', example='ParameterIllegall'),
      email?: string(name='Email', example='test1@aliyun.com'),
      message?: string(name='Message', example='Parameter error'),
    }
  ](name='FailList'),
  requestId?: string(name='RequestId', example='7A3D0E4A-0D4B-4BD0-90D7-A61DF8DD26AE'),
  successList?: [ 
    {
      code?: string(name='Code', example='Success'),
      email?: string(name='Email', example='test2@aliyun.com'),
      message?: string(name='Message', example='Success'),
    }
  ](name='SuccessList'),
}

model DeleteEmailVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteEmailVerificationResponseBody(name='body'),
}

/**
 * @summary 删除邮箱验证
 *
 * @param request DeleteEmailVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteEmailVerificationResponse
 */
async function deleteEmailVerificationWithOptions(request: DeleteEmailVerificationRequest, runtime: Util.RuntimeOptions): DeleteEmailVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'DeleteEmailVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 删除邮箱验证
 *
 * @param request DeleteEmailVerificationRequest
 * @return DeleteEmailVerificationResponse
 */
async function deleteEmailVerification(request: DeleteEmailVerificationRequest): DeleteEmailVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return deleteEmailVerificationWithOptions(request, runtime);
}

model DeleteRegistrantProfileRequest {
  lang?: string(name='Lang', example='en'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='3600000'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model DeleteRegistrantProfileResponseBody = {
  requestId?: string(name='RequestId', example='C50E41A0-09F1-4491-8DB8-AF55BD2D0CC8'),
}

model DeleteRegistrantProfileResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteRegistrantProfileResponseBody(name='body'),
}

/**
 * @summary 删除联系人模板
 *
 * @param request DeleteRegistrantProfileRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteRegistrantProfileResponse
 */
async function deleteRegistrantProfileWithOptions(request: DeleteRegistrantProfileRequest, runtime: Util.RuntimeOptions): DeleteRegistrantProfileResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'DeleteRegistrantProfile',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 删除联系人模板
 *
 * @param request DeleteRegistrantProfileRequest
 * @return DeleteRegistrantProfileResponse
 */
async function deleteRegistrantProfile(request: DeleteRegistrantProfileRequest): DeleteRegistrantProfileResponse {
  var runtime = new Util.RuntimeOptions{};
  return deleteRegistrantProfileWithOptions(request, runtime);
}

model DomainSpecialBizCancelRequest {
  bizId?: long(name='BizId', description='The business ID.

This parameter is required.', example='3666'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model DomainSpecialBizCancelResponseBody = {
  allowRetry?: boolean(name='AllowRetry', description='Indicates whether retries are allowed.', example='False'),
  appName?: string(name='AppName', description='The name of the application for which the error code is returned.', example='test-com'),
  dynamicCode?: string(name='DynamicCode', description='The dynamic error code.', example='-'),
  dynamicMessage?: string(name='DynamicMessage', description='The dynamic error message.', example='-'),
  errorArgs?: [ any ](name='ErrorArgs', description='The array of error parameters that are returned.'),
  errorCode?: string(name='ErrorCode', description='The error code.'),
  errorMsg?: string(name='ErrorMsg', description='The error message.', example='110001'),
  httpStatusCode?: int32(name='HttpStatusCode', description='The HTTP status code that is directly returned.', example='200'),
  module?: any(name='Module', description='The returned data.', example='-'),
  requestId?: string(name='RequestId', description='The request ID.', example='096DCF79-A89A-5CED-B7DE-1B04761023B9'),
  success?: boolean(name='Success', description='Indicates whether the request is successful. Valid values: true and false.', example='True'),
  synchro?: boolean(name='Synchro', description='Indicates whether to perform synchronous processing.', example='True'),
}

model DomainSpecialBizCancelResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DomainSpecialBizCancelResponseBody(name='body'),
}

/**
 * @summary 取消域名特殊业务流程
 *
 * @param request DomainSpecialBizCancelRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return DomainSpecialBizCancelResponse
 */
async function domainSpecialBizCancelWithOptions(request: DomainSpecialBizCancelRequest, runtime: Util.RuntimeOptions): DomainSpecialBizCancelResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.bizId)) {
    body['BizId'] = request.bizId;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'DomainSpecialBizCancel',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 取消域名特殊业务流程
 *
 * @param request DomainSpecialBizCancelRequest
 * @return DomainSpecialBizCancelResponse
 */
async function domainSpecialBizCancel(request: DomainSpecialBizCancelRequest): DomainSpecialBizCancelResponse {
  var runtime = new Util.RuntimeOptions{};
  return domainSpecialBizCancelWithOptions(request, runtime);
}

model EmailVerifiedRequest {
  email?: string(name='Email', description='This parameter is required.', example='abc@aliyun.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model EmailVerifiedResponseBody = {
  requestId?: string(name='RequestId', example='BF014B60-C708-4253-B5F2-3F9B493F398B'),
}

model EmailVerifiedResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: EmailVerifiedResponseBody(name='body'),
}

/**
 * @summary 邮箱验证通过
 *
 * @param request EmailVerifiedRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return EmailVerifiedResponse
 */
async function emailVerifiedWithOptions(request: EmailVerifiedRequest, runtime: Util.RuntimeOptions): EmailVerifiedResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'EmailVerified',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 邮箱验证通过
 *
 * @param request EmailVerifiedRequest
 * @return EmailVerifiedResponse
 */
async function emailVerified(request: EmailVerifiedRequest): EmailVerifiedResponse {
  var runtime = new Util.RuntimeOptions{};
  return emailVerifiedWithOptions(request, runtime);
}

model FuzzyMatchDomainSensitiveWordRequest {
  keyword?: string(name='Keyword', description='This parameter is required.', example='xxx**.cn'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model FuzzyMatchDomainSensitiveWordResponseBody = {
  exist?: boolean(name='Exist', example='true'),
  keyword?: string(name='Keyword', example='xxx**.cn'),
  matchedSentiveWords?: {
    matchedSensitiveWord?: [ 
    {
      word?: string(name='Word', example='xxx'),
    }
  ](name='MatchedSensitiveWord')
  }(name='MatchedSentiveWords'),
  requestId?: string(name='RequestId', example='D15F91FD-0B34-4E48-8CBF-EFA5D2A31586'),
}

model FuzzyMatchDomainSensitiveWordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: FuzzyMatchDomainSensitiveWordResponseBody(name='body'),
}

/**
 * @summary 通过关键字进行模糊匹配
 *
 * @param request FuzzyMatchDomainSensitiveWordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return FuzzyMatchDomainSensitiveWordResponse
 */
async function fuzzyMatchDomainSensitiveWordWithOptions(request: FuzzyMatchDomainSensitiveWordRequest, runtime: Util.RuntimeOptions): FuzzyMatchDomainSensitiveWordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.keyword)) {
    query['Keyword'] = request.keyword;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'FuzzyMatchDomainSensitiveWord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 通过关键字进行模糊匹配
 *
 * @param request FuzzyMatchDomainSensitiveWordRequest
 * @return FuzzyMatchDomainSensitiveWordResponse
 */
async function fuzzyMatchDomainSensitiveWord(request: FuzzyMatchDomainSensitiveWordRequest): FuzzyMatchDomainSensitiveWordResponse {
  var runtime = new Util.RuntimeOptions{};
  return fuzzyMatchDomainSensitiveWordWithOptions(request, runtime);
}

model GetIntlFixPriceDomainListUrlRequest {
  listDate?: string(name='ListDate', example='20240809'),
}

model GetIntlFixPriceDomainListUrlResponseBody = {
  module?: {
    downloadUrl?: string(name='DownloadUrl', example='http://intl-fixed-price.oss-cn-zhangjiakou.aliyuncs.com/aliyun_intl_fixed_price_domain_20240827.gz?Expires=1724830838&OSSAccessKeyId=LTAI5tPMAybR4gfSEjdfAk1F&Signature=tb0SPs6tKb9gLKyQ5ibpQnBUuTY%3D'),
  }(name='Module'),
  requestId?: string(name='RequestId', example='BF014B60-C708-4253-B5F2-3F9B493F398B'),
}

model GetIntlFixPriceDomainListUrlResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetIntlFixPriceDomainListUrlResponseBody(name='body'),
}

/**
 * @summary 查询国际一口价在售域名列表
 *
 * @param request GetIntlFixPriceDomainListUrlRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetIntlFixPriceDomainListUrlResponse
 */
async function getIntlFixPriceDomainListUrlWithOptions(request: GetIntlFixPriceDomainListUrlRequest, runtime: Util.RuntimeOptions): GetIntlFixPriceDomainListUrlResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.listDate)) {
    query['ListDate'] = request.listDate;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'GetIntlFixPriceDomainListUrl',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 查询国际一口价在售域名列表
 *
 * @param request GetIntlFixPriceDomainListUrlRequest
 * @return GetIntlFixPriceDomainListUrlResponse
 */
async function getIntlFixPriceDomainListUrl(request: GetIntlFixPriceDomainListUrlRequest): GetIntlFixPriceDomainListUrlResponse {
  var runtime = new Util.RuntimeOptions{};
  return getIntlFixPriceDomainListUrlWithOptions(request, runtime);
}

model GetOperationOssUploadPolicyRequest {
  auditType?: int32(name='AuditType', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
}

model GetOperationOssUploadPolicyResponseBody = {
  accessid?: string(name='Accessid', example='hObpgEXoca42****'),
  encodedPolicy?: string(name='EncodedPolicy', example='eyJleHBpcmF0aW9uIjoiMjAaMC0wNy0wMlQxKToyMDoxMS44ODRaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsNTI0Mjg4MDBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiMTIxOTU0MTE2MTIxMzA1Ny9PRkZMSU5FX1RSQU5TRkVSLzE1OTM2ODg1MTE4ODMi****'),
  expireTime?: string(name='ExpireTime', example='1593688811881'),
  fileDir?: string(name='FileDir', example='1219541161213157/OFFLINE_TRANSFER/159368851****'),
  host?: string(name='Host', description='OSS Endpoint。', example='//***-basic-cert.oss-cn-***.aliyuncs.com/'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-40EC-8035-4B12FEFD7D011'),
  signature?: string(name='Signature', example='pNVECGkyL0tl4bKXekV5ErZ****'),
}

model GetOperationOssUploadPolicyResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetOperationOssUploadPolicyResponseBody(name='body'),
}

/**
 * @param request GetOperationOssUploadPolicyRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetOperationOssUploadPolicyResponse
 */
async function getOperationOssUploadPolicyWithOptions(request: GetOperationOssUploadPolicyRequest, runtime: Util.RuntimeOptions): GetOperationOssUploadPolicyResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditType)) {
    query['AuditType'] = request.auditType;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'GetOperationOssUploadPolicy',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request GetOperationOssUploadPolicyRequest
 * @return GetOperationOssUploadPolicyResponse
 */
async function getOperationOssUploadPolicy(request: GetOperationOssUploadPolicyRequest): GetOperationOssUploadPolicyResponse {
  var runtime = new Util.RuntimeOptions{};
  return getOperationOssUploadPolicyWithOptions(request, runtime);
}

model GetQualificationUploadPolicyRequest {
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model GetQualificationUploadPolicyResponseBody = {
  accessid?: string(name='Accessid', example='hObpgEXoca42****'),
  dir?: string(name='Dir', example='20211220/131953297274****_4de3db85-4f98-488d-845b-d75bf035b13d'),
  expire?: string(name='Expire', example='1593688811881'),
  host?: string(name='Host', example='https://********-review.oss-cn-********.aliyuncs.com'),
  policy?: string(name='Policy', example='eyJleHBpcmF0aW9uIjoiMjAaMC0wNy0wMlQxKToyMDoxMS44ODRaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsNTI0Mjg4MDBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiMTIxOTU0MTE2MTIxMzA1Ny9PRkZMSU5FX1RSQU5TRkVSLzE1OTM2ODg1MTE4ODMi****'),
  prefix?: string(name='Prefix', example='20211220/131953297274****_4de3db85-4f98-488d-845b-d75bf035b13d_${filename}'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
  signature?: string(name='Signature', example='pNVECGkyL0tl4bKXekV5ErZ****'),
}

model GetQualificationUploadPolicyResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetQualificationUploadPolicyResponseBody(name='body'),
}

/**
 * @param request GetQualificationUploadPolicyRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetQualificationUploadPolicyResponse
 */
async function getQualificationUploadPolicyWithOptions(request: GetQualificationUploadPolicyRequest, runtime: Util.RuntimeOptions): GetQualificationUploadPolicyResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'GetQualificationUploadPolicy',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request GetQualificationUploadPolicyRequest
 * @return GetQualificationUploadPolicyResponse
 */
async function getQualificationUploadPolicy(request: GetQualificationUploadPolicyRequest): GetQualificationUploadPolicyResponse {
  var runtime = new Util.RuntimeOptions{};
  return getQualificationUploadPolicyWithOptions(request, runtime);
}

model ListEmailVerificationRequest {
  beginCreateTime?: long(name='BeginCreateTime', example='1522080000000'),
  email?: string(name='Email', example='username@example.com'),
  endCreateTime?: long(name='EndCreateTime', example='1522080000000'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', example='1'),
  pageSize?: int32(name='PageSize', example='500'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  verificationStatus?: int32(name='VerificationStatus', example='1'),
}

model ListEmailVerificationResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: [ 
    {
      confirmIp?: string(name='ConfirmIp', example='127.0.0.1'),
      email?: string(name='Email', example='username@example.com'),
      emailVerificationNo?: string(name='EmailVerificationNo', example='00000a21fd374da99d9c95b48500000'),
      gmtCreate?: string(name='GmtCreate', example='2017-12-25 03:38:46'),
      gmtModified?: string(name='GmtModified', example='2017-12-25 03:41:11'),
      sendIp?: string(name='SendIp', example='127.0.0.1'),
      tokenSendTime?: string(name='TokenSendTime', example='2017-12-25 03:38:46'),
      userId?: string(name='UserId', example='0000'),
      verificationStatus?: int32(name='VerificationStatus', example='1'),
      verificationTime?: string(name='VerificationTime', example='2017-12-25 03:41:11'),
    }
  ](name='Data'),
  nextPage?: boolean(name='NextPage', example='false'),
  pageSize?: int32(name='PageSize', example='500'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='78C60CC3-FF0A-44E2-989A-DDE0597791C3'),
  totalItemNum?: int32(name='TotalItemNum', example='2'),
  totalPageNum?: int32(name='TotalPageNum', example='1'),
}

model ListEmailVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListEmailVerificationResponseBody(name='body'),
}

/**
 * @param request ListEmailVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListEmailVerificationResponse
 */
async function listEmailVerificationWithOptions(request: ListEmailVerificationRequest, runtime: Util.RuntimeOptions): ListEmailVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.beginCreateTime)) {
    query['BeginCreateTime'] = request.beginCreateTime;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.endCreateTime)) {
    query['EndCreateTime'] = request.endCreateTime;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.verificationStatus)) {
    query['VerificationStatus'] = request.verificationStatus;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ListEmailVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request ListEmailVerificationRequest
 * @return ListEmailVerificationResponse
 */
async function listEmailVerification(request: ListEmailVerificationRequest): ListEmailVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return listEmailVerificationWithOptions(request, runtime);
}

model ListServerLockRequest {
  beginStartDate?: long(name='BeginStartDate', description='The start of the time range to query.', example='2021-07-10 17:37:36'),
  domainName?: string(name='DomainName', description='The domain name for which you want to query the enabled registry lock.', example='example.com'),
  endExpireDate?: long(name='EndExpireDate', description='The end of the expiration time.', example='2021-07-10 17:37:36'),
  endStartDate?: long(name='EndStartDate', description='The end of the time range to query.', example='2020-07-10 17:37:36'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   zh: Chinese
*   en: English

Default value: en.', example='en'),
  lockProductId?: string(name='LockProductId', description='The ID of the product to which the domain name with the registry lock enabled belongs.', example='1807**'),
  orderBy?: string(name='OrderBy', description='The field that you use to sort the query results.

Valid values:

*   EXPIRE_DATE', example='EXPIRE_DATE'),
  orderByType?: string(name='OrderByType', description='The order of the information based on which you want to sort the domain names, such as the registration date and expiration date. Valid values: ASC and DESC. The value ASC specifies the ascending order. The value DESC specifies the descending order. If this parameter is not configured, the default value DESC is used.', example='DESC'),
  pageNum?: int32(name='PageNum', description='The page number.', example='1'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.', example='10'),
  serverLockStatus?: int32(name='ServerLockStatus', description='The status of the registry lock. Valid values:

*   1: The registry lock is not enabled.
*   2: The registry lock is enabled.
*   3: The registry lock is disabled.', example='1'),
  startExpireDate?: long(name='StartExpireDate', description='The start of the expiration time.', example='2020-07-10 17:37:36'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client. For example, you can set the value to **127.0.0.1**.', example='127.0.0.1'),
}

model ListServerLockResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', description='The page number.', example='0'),
  data?: [ 
    {
      domainInstanceId?: string(name='DomainInstanceId', description='The instance ID of the domain name.', example='S20190N1DAI4****'),
      domainName?: string(name='DomainName', description='The domain name that has valid registry lock information.', example='example.com'),
      expireDate?: string(name='ExpireDate', description='The expiration time.', example='2030-07-10 17:37:36'),
      gmtCreate?: string(name='GmtCreate', description='The creation time.', example='2020-02-19 16:38:07'),
      gmtModified?: string(name='GmtModified', description='The time when the domain name was last modified.', example='2022-02-19 16:40:38'),
      lockInstanceId?: string(name='LockInstanceId', description='The instance ID of the domain name for which the registry lock is enabled.', example='S2021591IQ28****'),
      lockProductId?: string(name='LockProductId', description='The ID of the product to which the domain name with the registry lock enabled belongs.', example='1807**'),
      serverLockStatus?: string(name='ServerLockStatus', description='The status of the registry lock.', example='2'),
      startDate?: string(name='StartDate', description='The start time.', example='2021-07-10 17:37:36'),
      userId?: string(name='UserId', description='The user ID.', example='121000000****'),
    }
  ](name='Data', description='The response parameters.'),
  nextPage?: boolean(name='NextPage', description='Indicates whether the current page is followed by a page.', example='false'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.', example='5'),
  prePage?: boolean(name='PrePage', description='Indicates whether the current page is preceded by a page.', example='false'),
  requestId?: string(name='RequestId', description='The request ID.', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
  totalItemNum?: int32(name='TotalItemNum', description='The total number of entries returned.', example='2'),
  totalPageNum?: int32(name='TotalPageNum', description='The total number of pages returned.', example='1'),
}

model ListServerLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListServerLockResponseBody(name='body'),
}

/**
 * @summary Queries information about domain names for which registry locks are enabled.
 *
 * @param request ListServerLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListServerLockResponse
 */
async function listServerLockWithOptions(request: ListServerLockRequest, runtime: Util.RuntimeOptions): ListServerLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.beginStartDate)) {
    query['BeginStartDate'] = request.beginStartDate;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.endExpireDate)) {
    query['EndExpireDate'] = request.endExpireDate;
  }
  if (!Util.isUnset(request.endStartDate)) {
    query['EndStartDate'] = request.endStartDate;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.lockProductId)) {
    query['LockProductId'] = request.lockProductId;
  }
  if (!Util.isUnset(request.orderBy)) {
    query['OrderBy'] = request.orderBy;
  }
  if (!Util.isUnset(request.orderByType)) {
    query['OrderByType'] = request.orderByType;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.serverLockStatus)) {
    query['ServerLockStatus'] = request.serverLockStatus;
  }
  if (!Util.isUnset(request.startExpireDate)) {
    query['StartExpireDate'] = request.startExpireDate;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ListServerLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary Queries information about domain names for which registry locks are enabled.
 *
 * @param request ListServerLockRequest
 * @return ListServerLockResponse
 */
async function listServerLock(request: ListServerLockRequest): ListServerLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return listServerLockWithOptions(request, runtime);
}

model LookupTmchNoticeRequest {
  claimKey?: string(name='ClaimKey', description='This parameter is required.', example='2017092100/8/2/1/kDfu9htHGEx_y-LJ3XSlKMZ70000020001'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model LookupTmchNoticeResponseBody = {
  claims?: {
    claim?: [ 
    {
      classDescs?: {
        classDesc?: [ 
        {
          classNum?: int32(name='ClassNum', example='18'),
          desc?: string(name='Desc', example='New Zealand'),
        }
      ](name='ClassDesc')
      }(name='ClassDescs'),
      contacts?: {
        contact?: [ 
        {
          addr?: {
            cc?: string(name='Cc', example='NZ'),
            city?: string(name='City', example='Auckland'),
            pc?: string(name='Pc', example='1010'),
            sp?: string(name='Sp', example='Auckland'),
            street?: {
              street?: [ string ](name='Street')
            }(name='Street'),
          }(name='Addr'),
          email?: string(name='Email', example='username@example.com'),
          fax?: string(name='Fax', example='4472335**8'),
          name?: string(name='Name', example='Tom'),
          org?: string(name='Org', example='Tom'),
          type?: string(name='Type', example='agent'),
          voice?: string(name='Voice', example='1390000****'),
        }
      ](name='Contact')
      }(name='Contacts'),
      goodsAndServices?: string(name='GoodsAndServices', example='Class 9: Calculators; bags, coverings,containers, carriers and holders for mobile phones, personal handheld computers and notebooks; headphones; speakers; blank storage media;batteries. Class 16: Paper'),
      holders?: {
        holder?: [ 
        {
          addr?: {
            cc?: string(name='Cc', example='NZ'),
            city?: string(name='City', example='Wellington'),
            pc?: string(name='Pc', example='6011'),
            sp?: string(name='Sp', example='Wellington'),
            street?: {
              street?: [ string ](name='Street')
            }(name='Street'),
          }(name='Addr'),
          entitlement?: string(name='Entitlement', example='owner'),
          org?: string(name='Org', example='Whitcoulls 2011 Limited'),
        }
      ](name='Holder')
      }(name='Holders'),
      jurDesc?: {
        desc?: string(name='Desc', example='New Zealand'),
        jurCC?: string(name='JurCC', example='NZ'),
      }(name='JurDesc'),
      markName?: string(name='MarkName', example='POTED'),
    }
  ](name='Claim')
  }(name='Claims'),
  id?: long(name='Id', example='586608000000'),
  label?: string(name='Label', example='noted'),
  notAfter?: string(name='NotAfter', example='2018-10-15T00:00:00.0Z'),
  notBefore?: string(name='NotBefore', example='2018-10-13T00:00:00.0Z'),
  requestId?: string(name='RequestId', example='01C10C8E-0468-468C-BCD9-E709BDD0AE8F'),
}

model LookupTmchNoticeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: LookupTmchNoticeResponseBody(name='body'),
}

/**
 * @param request LookupTmchNoticeRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return LookupTmchNoticeResponse
 */
async function lookupTmchNoticeWithOptions(request: LookupTmchNoticeRequest, runtime: Util.RuntimeOptions): LookupTmchNoticeResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.claimKey)) {
    query['ClaimKey'] = request.claimKey;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'LookupTmchNotice',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request LookupTmchNoticeRequest
 * @return LookupTmchNoticeResponse
 */
async function lookupTmchNotice(request: LookupTmchNoticeRequest): LookupTmchNoticeResponse {
  var runtime = new Util.RuntimeOptions{};
  return lookupTmchNoticeWithOptions(request, runtime);
}

model PollTaskResultRequest {
  domainName?: string(name='DomainName', example='example.com'),
  instanceId?: string(name='InstanceId', example='S20181T0WLI85212'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='20'),
  taskNo?: string(name='TaskNo', example='75addb07-28a3-450e-b5ec-test'),
  taskResultStatus?: int32(name='TaskResultStatus', example='2'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model PollTaskResultResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    taskDetail?: [ 
    {
      createTime?: string(name='CreateTime', example='2018-03-26 15:08:20'),
      domainName?: string(name='DomainName', example='example.com'),
      errorMsg?: string(name='ErrorMsg', example='The operation is successful.'),
      instanceId?: string(name='InstanceId', example='S201817141000000'),
      taskDetailNo?: string(name='TaskDetailNo', example='15fee9d10d514bada66bd08c5723c583'),
      taskNo?: string(name='TaskNo', example='b95bc334-f7d8-4f39-8a62-4c4302a243d8'),
      taskResult?: string(name='TaskResult', example='test'),
      taskStatus?: string(name='TaskStatus', example='EXECUTE_SUCCESS'),
      taskStatusCode?: int32(name='TaskStatusCode', example='2'),
      taskType?: string(name='TaskType', example='CHG_DNS'),
      taskTypeDescription?: string(name='TaskTypeDescription'),
      tryCount?: int32(name='TryCount', example='0'),
      updateTime?: string(name='UpdateTime', example='2018-03-26 15:22:18'),
    }
  ](name='TaskDetail')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='false'),
  pageSize?: int32(name='PageSize', example='1'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='E879DC07-38EE-4408-9F33-73B30CD965CD'),
  totalItemNum?: int32(name='TotalItemNum', example='10'),
  totalPageNum?: int32(name='TotalPageNum', example='10'),
}

model PollTaskResultResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PollTaskResultResponseBody(name='body'),
}

/**
 * @param request PollTaskResultRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return PollTaskResultResponse
 */
async function pollTaskResultWithOptions(request: PollTaskResultRequest, runtime: Util.RuntimeOptions): PollTaskResultResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.taskNo)) {
    query['TaskNo'] = request.taskNo;
  }
  if (!Util.isUnset(request.taskResultStatus)) {
    query['TaskResultStatus'] = request.taskResultStatus;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'PollTaskResult',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request PollTaskResultRequest
 * @return PollTaskResultResponse
 */
async function pollTaskResult(request: PollTaskResultRequest): PollTaskResultResponse {
  var runtime = new Util.RuntimeOptions{};
  return pollTaskResultWithOptions(request, runtime);
}

model QueryAdvancedDomainListRequest {
  domainGroupId?: long(name='DomainGroupId', example='-1'),
  domainNameSort?: boolean(name='DomainNameSort', example='false'),
  domainStatus?: int32(name='DomainStatus', example='1'),
  endExpirationDate?: long(name='EndExpirationDate', example='1522080000000'),
  endLength?: int32(name='EndLength', example='5'),
  endRegistrationDate?: long(name='EndRegistrationDate', example='1522080000000'),
  excluded?: string(name='Excluded', example='test'),
  excludedPrefix?: boolean(name='ExcludedPrefix', example='false'),
  excludedSuffix?: boolean(name='ExcludedSuffix', example='false'),
  expirationDateSort?: boolean(name='ExpirationDateSort', example='false'),
  form?: int32(name='Form', example='1'),
  isPremiumDomain?: boolean(name='IsPremiumDomain'),
  keyWord?: string(name='KeyWord', example='test'),
  keyWordPrefix?: boolean(name='KeyWordPrefix', example='false'),
  keyWordSuffix?: boolean(name='KeyWordSuffix', example='true'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='10'),
  productDomainType?: string(name='ProductDomainType', example='gTLD'),
  productDomainTypeSort?: boolean(name='ProductDomainTypeSort', example='false'),
  registrationDateSort?: boolean(name='RegistrationDateSort', example='false'),
  resourceGroupId?: string(name='ResourceGroupId', example='rg-acfmw6bpc6n7zai'),
  startExpirationDate?: long(name='StartExpirationDate', example='1522080000000'),
  startLength?: int32(name='StartLength', example='5'),
  startRegistrationDate?: long(name='StartRegistrationDate', example='1522080000000'),
  suffixs?: string(name='Suffixs', example='com.cn'),
  tag?: [ 
    {
      key?: string(name='Key'),
      value?: string(name='Value'),
    }
  ](name='Tag'),
  tradeType?: int32(name='TradeType', example='-1'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryAdvancedDomainListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    domain?: [ 
    {
      dnsList?: {
        dns?: [ string ](name='Dns')
      }(name='DnsList'),
      domainAuditStatus?: string(name='DomainAuditStatus', example='SUCCEED'),
      domainGroupId?: string(name='DomainGroupId', example='-1'),
      domainGroupName?: string(name='DomainGroupName'),
      domainName?: string(name='DomainName', example='example.com'),
      domainStatus?: string(name='DomainStatus', example='5'),
      domainType?: string(name='DomainType', example='gTLD'),
      email?: string(name='Email', example='username@example.com'),
      expirationCurrDateDiff?: int32(name='ExpirationCurrDateDiff', example='356'),
      expirationDate?: string(name='ExpirationDate', example='2019-04-09 17:07:03'),
      expirationDateLong?: long(name='ExpirationDateLong', example='1554800823000'),
      expirationDateStatus?: string(name='ExpirationDateStatus', example='1'),
      instanceId?: string(name='InstanceId', example='S20182000000000'),
      premium?: boolean(name='Premium', example='false'),
      productId?: string(name='ProductId', example='2a'),
      registrantOrganization?: string(name='RegistrantOrganization', example='Tom'),
      registrantType?: string(name='RegistrantType', example='1'),
      registrationDate?: string(name='RegistrationDate', example='2018-04-09 17:07:03'),
      registrationDateLong?: long(name='RegistrationDateLong', example='1523264823000'),
      remark?: string(name='Remark'),
      resourceGroupId?: string(name='ResourceGroupId', example='rg-aek2yyciz557g3q'),
      tag?: {
        tag?: [ 
        {
          key?: string(name='Key'),
          value?: string(name='Value'),
        }
      ](name='Tag')
      }(name='Tag'),
      zhRegistrantOrganization?: string(name='ZhRegistrantOrganization', example='Tom'),
    }
  ](name='Domain')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='2'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='D200000-C0B9-4CD3-B92A-9B44A000000'),
  totalItemNum?: int32(name='TotalItemNum', example='549'),
  totalPageNum?: int32(name='TotalPageNum', example='275'),
}

model QueryAdvancedDomainListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryAdvancedDomainListResponseBody(name='body'),
}

/**
 * @summary 搜索域名列表
 *
 * @param request QueryAdvancedDomainListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryAdvancedDomainListResponse
 */
async function queryAdvancedDomainListWithOptions(request: QueryAdvancedDomainListRequest, runtime: Util.RuntimeOptions): QueryAdvancedDomainListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.domainNameSort)) {
    query['DomainNameSort'] = request.domainNameSort;
  }
  if (!Util.isUnset(request.domainStatus)) {
    query['DomainStatus'] = request.domainStatus;
  }
  if (!Util.isUnset(request.endExpirationDate)) {
    query['EndExpirationDate'] = request.endExpirationDate;
  }
  if (!Util.isUnset(request.endLength)) {
    query['EndLength'] = request.endLength;
  }
  if (!Util.isUnset(request.endRegistrationDate)) {
    query['EndRegistrationDate'] = request.endRegistrationDate;
  }
  if (!Util.isUnset(request.excluded)) {
    query['Excluded'] = request.excluded;
  }
  if (!Util.isUnset(request.excludedPrefix)) {
    query['ExcludedPrefix'] = request.excludedPrefix;
  }
  if (!Util.isUnset(request.excludedSuffix)) {
    query['ExcludedSuffix'] = request.excludedSuffix;
  }
  if (!Util.isUnset(request.expirationDateSort)) {
    query['ExpirationDateSort'] = request.expirationDateSort;
  }
  if (!Util.isUnset(request.form)) {
    query['Form'] = request.form;
  }
  if (!Util.isUnset(request.isPremiumDomain)) {
    query['IsPremiumDomain'] = request.isPremiumDomain;
  }
  if (!Util.isUnset(request.keyWord)) {
    query['KeyWord'] = request.keyWord;
  }
  if (!Util.isUnset(request.keyWordPrefix)) {
    query['KeyWordPrefix'] = request.keyWordPrefix;
  }
  if (!Util.isUnset(request.keyWordSuffix)) {
    query['KeyWordSuffix'] = request.keyWordSuffix;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.productDomainType)) {
    query['ProductDomainType'] = request.productDomainType;
  }
  if (!Util.isUnset(request.productDomainTypeSort)) {
    query['ProductDomainTypeSort'] = request.productDomainTypeSort;
  }
  if (!Util.isUnset(request.registrationDateSort)) {
    query['RegistrationDateSort'] = request.registrationDateSort;
  }
  if (!Util.isUnset(request.resourceGroupId)) {
    query['ResourceGroupId'] = request.resourceGroupId;
  }
  if (!Util.isUnset(request.startExpirationDate)) {
    query['StartExpirationDate'] = request.startExpirationDate;
  }
  if (!Util.isUnset(request.startLength)) {
    query['StartLength'] = request.startLength;
  }
  if (!Util.isUnset(request.startRegistrationDate)) {
    query['StartRegistrationDate'] = request.startRegistrationDate;
  }
  if (!Util.isUnset(request.suffixs)) {
    query['Suffixs'] = request.suffixs;
  }
  if (!Util.isUnset(request.tag)) {
    query['Tag'] = request.tag;
  }
  if (!Util.isUnset(request.tradeType)) {
    query['TradeType'] = request.tradeType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryAdvancedDomainList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 搜索域名列表
 *
 * @param request QueryAdvancedDomainListRequest
 * @return QueryAdvancedDomainListResponse
 */
async function queryAdvancedDomainList(request: QueryAdvancedDomainListRequest): QueryAdvancedDomainListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryAdvancedDomainListWithOptions(request, runtime);
}

model QueryArtExtensionRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.art'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryArtExtensionResponseBody = {
  dateOrPeriod?: string(name='DateOrPeriod', example='2019-10-01'),
  dimensions?: string(name='Dimensions', example='20 cm'),
  features?: string(name='Features', example='iconicity'),
  inscriptionsAndMarkings?: string(name='InscriptionsAndMarkings', example='realism'),
  maker?: string(name='Maker', example='zhang san'),
  materialsAndTechniques?: string(name='MaterialsAndTechniques', example='silk'),
  objectType?: string(name='ObjectType', example='The embroidery'),
  reference?: string(name='Reference', example='drawings'),
  requestId?: string(name='RequestId', example='814B2AF0-ED6F-4C13-B41C-8AC0B1023583'),
  subject?: string(name='Subject', example='peace'),
  title?: string(name='Title', example='Peace and friendship'),
}

model QueryArtExtensionResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryArtExtensionResponseBody(name='body'),
}

/**
 * @param request QueryArtExtensionRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryArtExtensionResponse
 */
async function queryArtExtensionWithOptions(request: QueryArtExtensionRequest, runtime: Util.RuntimeOptions): QueryArtExtensionResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryArtExtension',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryArtExtensionRequest
 * @return QueryArtExtensionResponse
 */
async function queryArtExtension(request: QueryArtExtensionRequest): QueryArtExtensionResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryArtExtensionWithOptions(request, runtime);
}

model QueryChangeLogListRequest {
  domainName?: string(name='DomainName', example='example.com'),
  endDate?: long(name='EndDate', example='1522080000000'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='1'),
  startDate?: long(name='StartDate', example='1522080000000'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryChangeLogListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    changeLog?: [ 
    {
      details?: string(name='Details', example='dns1;dns2 -> dns3;dns4'),
      domainName?: string(name='DomainName', example='example.com'),
      operation?: string(name='Operation', example='DNS modification'),
      operationIPAddress?: string(name='OperationIPAddress', example='127.0.0.1'),
      result?: string(name='Result', example='Failed'),
      time?: string(name='Time', example='2017-12-26 12:00:00'),
    }
  ](name='ChangeLog')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='1'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='2DEDFF32-7827-46B1-BE90-3DB8ABD91A58'),
  resultLimit?: boolean(name='ResultLimit', example='true'),
  totalItemNum?: int32(name='TotalItemNum', example='1000'),
  totalPageNum?: int32(name='TotalPageNum', example='1000'),
}

model QueryChangeLogListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryChangeLogListResponseBody(name='body'),
}

/**
 * @param request QueryChangeLogListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryChangeLogListResponse
 */
async function queryChangeLogListWithOptions(request: QueryChangeLogListRequest, runtime: Util.RuntimeOptions): QueryChangeLogListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.endDate)) {
    query['EndDate'] = request.endDate;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.startDate)) {
    query['StartDate'] = request.startDate;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryChangeLogList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryChangeLogListRequest
 * @return QueryChangeLogListResponse
 */
async function queryChangeLogList(request: QueryChangeLogListRequest): QueryChangeLogListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryChangeLogListWithOptions(request, runtime);
}

model QueryContactInfoRequest {
  contactType?: string(name='ContactType', description='This parameter is required.', example='admin'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryContactInfoResponseBody = {
  address?: string(name='Address', example='xi hu qu *** jiedao *** xiaoqu *** zhuang 101'),
  city?: string(name='City', example='hang zhou shi'),
  country?: string(name='Country', example='CN'),
  createDate?: string(name='CreateDate', example='2019-03-20 11:37:29'),
  email?: string(name='Email', example='username@example.com'),
  postalCode?: string(name='PostalCode', example='310024'),
  province?: string(name='Province', example='zhe jiang'),
  registrantName?: string(name='RegistrantName', example='zhang san'),
  registrantOrganization?: string(name='RegistrantOrganization', example='zhang san'),
  requestId?: string(name='RequestId', example='C39ECA8A-BB5E-4F92-B013-6A032FA06B04'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='1234'),
  telephone?: string(name='Telephone', example='1820000****'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model QueryContactInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryContactInfoResponseBody(name='body'),
}

/**
 * @param request QueryContactInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryContactInfoResponse
 */
async function queryContactInfoWithOptions(request: QueryContactInfoRequest, runtime: Util.RuntimeOptions): QueryContactInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.contactType)) {
    query['ContactType'] = request.contactType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryContactInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryContactInfoRequest
 * @return QueryContactInfoResponse
 */
async function queryContactInfo(request: QueryContactInfoRequest): QueryContactInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryContactInfoWithOptions(request, runtime);
}

model QueryDSRecordRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDSRecordResponseBody = {
  DSRecordList?: [ 
    {
      algorithm?: int32(name='Algorithm', example='1'),
      digest?: string(name='Digest', example='f58fa917424383934c7b0cf1a90f61d692745680fa06f5ecdbe0924e86de9598'),
      digestType?: int32(name='DigestType', example='2'),
      keyTag?: int32(name='KeyTag', example='1'),
    }
  ](name='DSRecordList'),
  requestId?: string(name='RequestId', example='814B2AF0-ED6F-4C13-B41C-8AC0B1023583'),
}

model QueryDSRecordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDSRecordResponseBody(name='body'),
}

/**
 * @param request QueryDSRecordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDSRecordResponse
 */
async function queryDSRecordWithOptions(request: QueryDSRecordRequest, runtime: Util.RuntimeOptions): QueryDSRecordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDSRecord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDSRecordRequest
 * @return QueryDSRecordResponse
 */
async function queryDSRecord(request: QueryDSRecordRequest): QueryDSRecordResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDSRecordWithOptions(request, runtime);
}

model QueryDnsHostRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='ST2017120814571100001303'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDnsHostResponseBody = {
  dnsHostList?: [ 
    {
      dnsName?: string(name='DnsName', example='ns3'),
      ipList?: [ string ](name='IpList'),
    }
  ](name='DnsHostList'),
  requestId?: string(name='RequestId', example='18A313DD-3AF3-40AA-84F9-56BA45DC511F'),
}

model QueryDnsHostResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDnsHostResponseBody(name='body'),
}

/**
 * @param request QueryDnsHostRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDnsHostResponse
 */
async function queryDnsHostWithOptions(request: QueryDnsHostRequest, runtime: Util.RuntimeOptions): QueryDnsHostResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDnsHost',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDnsHostRequest
 * @return QueryDnsHostResponse
 */
async function queryDnsHost(request: QueryDnsHostRequest): QueryDnsHostResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDnsHostWithOptions(request, runtime);
}

model QueryDomainAdminDivisionRequest {
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDomainAdminDivisionResponseBody = {
  adminDivisions?: {
    adminDivision?: [ 
    {
      children?: {
        children?: [ 
        {
          childDivisionName?: string(name='ChildDivisionName'),
        }
      ](name='Children')
      }(name='Children'),
      divisionName?: string(name='DivisionName'),
    }
  ](name='AdminDivision')
  }(name='AdminDivisions'),
  requestId?: string(name='RequestId', example='4EA05A10-D4BC-47EA-AD9E-370A46BB4FB9'),
}

model QueryDomainAdminDivisionResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainAdminDivisionResponseBody(name='body'),
}

/**
 * @param request QueryDomainAdminDivisionRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainAdminDivisionResponse
 */
async function queryDomainAdminDivisionWithOptions(request: QueryDomainAdminDivisionRequest, runtime: Util.RuntimeOptions): QueryDomainAdminDivisionResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainAdminDivision',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDomainAdminDivisionRequest
 * @return QueryDomainAdminDivisionResponse
 */
async function queryDomainAdminDivision(request: QueryDomainAdminDivisionRequest): QueryDomainAdminDivisionResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainAdminDivisionWithOptions(request, runtime);
}

model QueryDomainByDomainNameRequest {
  domainName?: string(name='DomainName', description='The domain name.

This parameter is required.', example='example.com'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model QueryDomainByDomainNameResponseBody = {
  dnsList?: {
    dns?: [ string ](name='Dns')
  }(name='DnsList', description='The Domain Name System (DNS) servers of the domain name.'),
  domainGroupId?: long(name='DomainGroupId', description='The ID of the domain name group. You can call the [QueryDomainGroupList](https://help.aliyun.com/document_detail/69362.html) operation to query the ID of the domain name group.', example='123456'),
  domainGroupName?: string(name='DomainGroupName', description='The name of the domain name group.'),
  domainName?: string(name='DomainName', description='The domain name.', example='example.com'),
  domainNameProxyService?: boolean(name='DomainNameProxyService', description='Indicates whether privacy protection is enabled for the domain name.', example='false'),
  domainNameVerificationStatus?: string(name='DomainNameVerificationStatus', description='The status of name auditing for the domain name. Valid values:

*   **NONAUDIT**: The name auditing for the domain name is not performed.
*   **SUCCEED**: The name auditing for the domain name is successful.
*   **FAILED**: The name auditing for the domain name fails.
*   **AUDITING**: The name auditing for the domain name is in progress.', example='SUCCEED'),
  domainStatus?: string(name='DomainStatus', description='The status of the domain name. Valid values:

*   1: The domain name needs to be renewed.
*   2: The domain name needs to be redeemed.
*   3: The domain name is normal.', example='3'),
  domainType?: string(name='DomainType', description='The type of the domain name. Valid values:

*   New gTLD
*   gTLD
*   ccTLD', example='gTLD'),
  email?: string(name='Email', description='The email address of the domain name registrant.', example='username@example.com'),
  emailVerificationClientHold?: boolean(name='EmailVerificationClientHold', description='Indicates whether the domain name is in the ClientHold state.', example='false'),
  emailVerificationStatus?: int32(name='EmailVerificationStatus', description='Indicates whether the email address passes verification. Valid values:

*   **0**: The email address fails the verification.
*   **1**: The email address passes the verification.', example='1'),
  expirationCurrDateDiff?: int32(name='ExpirationCurrDateDiff', description='The number of days from the expiration date of the domain name to the current date.', example='356'),
  expirationDate?: string(name='ExpirationDate', description='The expiration date.', example='2019-12-07 17:02:13'),
  expirationDateLong?: long(name='ExpirationDateLong', description='The timestamp generated when the domain name expired.', example='1625111915000'),
  expirationDateStatus?: string(name='ExpirationDateStatus', description='Indicates whether the domain name expires. Valid values:

*   **1**: The domain name does not expire.
*   **2**: The domain name expires.', example='1'),
  instanceId?: string(name='InstanceId', description='The instance ID of the domain name.', example='S20179H1BBI9****'),
  premium?: boolean(name='Premium', description='Indicates whether the domain name is a premium domain name.', example='false'),
  realNameStatus?: string(name='RealNameStatus', description='The status of real-name verification for the domain name. Valid values:

*   **NONAUDIT**: The real-name verification is not performed.
*   **SUCCEED**: The real-name verification is successful.
*   **FAILED**: The real-name verification fails.
*   **AUDITING**: The real-name verification is in progress.', example='NONAUDIT'),
  registrantName?: string(name='RegistrantName', description='The name of the contact.', example='Test litm'),
  registrantOrganization?: string(name='RegistrantOrganization', description='The registrant of the domain name.', example='Test litm'),
  registrantType?: string(name='RegistrantType', description='The type of contact who registers the domain name. Valid values:

*   **1**: individual.
*   **2**: enterprise.', example='1'),
  registrantUpdatingStatus?: string(name='RegistrantUpdatingStatus', description='The status of the information about the domain name registrant. Valid values:

*   **PENDING**: The information about the domain name registrant is being modified.
*   **NORMAL**: normal.', example='NORMAL'),
  registrationDate?: string(name='RegistrationDate', description='The time when the domain name was registered.', example='2017-12-07 17:02:13'),
  registrationDateLong?: long(name='RegistrationDateLong', description='The timestamp generated when the domain name was registered.', example='1584675448000'),
  remark?: string(name='Remark', description='The remarks on the domain name.'),
  requestId?: string(name='RequestId', description='The request ID.', example='44101664-3E70-4F0E-89E5-CCB74BF*****'),
  resourceGroupId?: string(name='ResourceGroupId', description='The ID of the resource group.', example='rg-acfmw6bpc6n7zai'),
  tag?: {
    tag?: [ 
    {
      key?: string(name='Key', description='The tag key.'),
      vaue?: string(name='Vaue', description='The tag value.'),
    }
  ](name='Tag')
  }(name='Tag', description='The tags.'),
  transferOutStatus?: string(name='TransferOutStatus', description='The transfer status of the domain name. Valid values:

*   **NORMAL**: The domain name is normal.
*   **PENDING**: The domain name is being transferred out from Alibaba Cloud.', example='NORMAL'),
  transferProhibitionLock?: string(name='TransferProhibitionLock', description='The status of the transfer lock for the domain name. Valid values:

*   **NONE_SETTING**: No transfer lock is configured.
*   **OPEN**: The transfer lock is enabled.
*   **CLOSE**: The transfer lock is disabled.', example='CLOSE'),
  updateProhibitionLock?: string(name='UpdateProhibitionLock', description='The status of the security lock for the domain name. Valid values:

*   **NONE_SETTING**: No security lock is configured.
*   **OPEN**: The security lock is enabled.
*   **CLOSE**: The security lock is disabled.', example='CLOSE'),
  userId?: string(name='UserId', description='The user ID.', example='121000000****'),
  zhRegistrantName?: string(name='ZhRegistrantName', description='The Chinese name of the domain name contact.'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization', description='The Chinese name of the domain name registrant.'),
}

model QueryDomainByDomainNameResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainByDomainNameResponseBody(name='body'),
}

/**
 * @summary Queries the information about a domain name.
 *
 * @param request QueryDomainByDomainNameRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainByDomainNameResponse
 */
async function queryDomainByDomainNameWithOptions(request: QueryDomainByDomainNameRequest, runtime: Util.RuntimeOptions): QueryDomainByDomainNameResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainByDomainName',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary Queries the information about a domain name.
 *
 * @param request QueryDomainByDomainNameRequest
 * @return QueryDomainByDomainNameResponse
 */
async function queryDomainByDomainName(request: QueryDomainByDomainNameRequest): QueryDomainByDomainNameResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainByDomainNameWithOptions(request, runtime);
}

model QueryDomainByInstanceIdRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20131205001****'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDomainByInstanceIdResponseBody = {
  dnsList?: {
    dns?: [ string ](name='Dns')
  }(name='DnsList'),
  domainGroupId?: long(name='DomainGroupId', example='1234'),
  domainGroupName?: string(name='DomainGroupName'),
  domainName?: string(name='DomainName', example='example.com'),
  domainNameProxyService?: boolean(name='DomainNameProxyService', example='false'),
  domainNameVerificationStatus?: string(name='DomainNameVerificationStatus', example='NONAUDIT'),
  domainStatus?: string(name='DomainStatus', example='1'),
  domainType?: string(name='DomainType', example='gTLD'),
  email?: string(name='Email', example='username@example.com'),
  emailVerificationClientHold?: boolean(name='EmailVerificationClientHold', example='false'),
  emailVerificationStatus?: int32(name='EmailVerificationStatus', example='1'),
  expirationCurrDateDiff?: int32(name='ExpirationCurrDateDiff', example='356'),
  expirationDate?: string(name='ExpirationDate', example='2019-12-07 17:02:13'),
  expirationDateLong?: long(name='ExpirationDateLong', example='1625111915000'),
  expirationDateStatus?: string(name='ExpirationDateStatus', example='1'),
  instanceId?: string(name='InstanceId', example='S20179H1BBI9test'),
  premium?: boolean(name='Premium', example='false'),
  realNameStatus?: string(name='RealNameStatus', example='NONAUDIT'),
  registrantName?: string(name='RegistrantName', example='Test litm'),
  registrantOrganization?: string(name='RegistrantOrganization', example='Test litm'),
  registrantType?: string(name='RegistrantType', example='1'),
  registrantUpdatingStatus?: string(name='RegistrantUpdatingStatus', example='NORMAL'),
  registrationDate?: string(name='RegistrationDate', example='2017-12-07 17:02:13'),
  registrationDateLong?: long(name='RegistrationDateLong', example='1625111915000'),
  remark?: string(name='Remark'),
  requestId?: string(name='RequestId', example='23C9B3C4-9E2C-4405-A88D-BD33E459D140'),
  resourceGroupId?: string(name='ResourceGroupId', example='rg-acfmw6bpc6n7zai'),
  tag?: {
    tag?: [ 
    {
      key?: string(name='Key'),
      value?: string(name='Value'),
    }
  ](name='Tag')
  }(name='Tag'),
  transferOutStatus?: string(name='TransferOutStatus', example='NORMAL'),
  transferProhibitionLock?: string(name='TransferProhibitionLock', example='CLOSE'),
  updateProhibitionLock?: string(name='UpdateProhibitionLock', example='CLOSE'),
  userId?: string(name='UserId', example='121000000****'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model QueryDomainByInstanceIdResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainByInstanceIdResponseBody(name='body'),
}

/**
 * @summary 根据实例id查询域名信息
 *
 * @param request QueryDomainByInstanceIdRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainByInstanceIdResponse
 */
async function queryDomainByInstanceIdWithOptions(request: QueryDomainByInstanceIdRequest, runtime: Util.RuntimeOptions): QueryDomainByInstanceIdResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainByInstanceId',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 根据实例id查询域名信息
 *
 * @param request QueryDomainByInstanceIdRequest
 * @return QueryDomainByInstanceIdResponse
 */
async function queryDomainByInstanceId(request: QueryDomainByInstanceIdRequest): QueryDomainByInstanceIdResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainByInstanceIdWithOptions(request, runtime);
}

model QueryDomainGroupListRequest {
  domainGroupName?: string(name='DomainGroupName'),
  lang?: string(name='Lang', example='en'),
  showDeletingGroup?: boolean(name='ShowDeletingGroup', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDomainGroupListResponseBody = {
  data?: {
    domainGroup?: [ 
    {
      beingDeleted?: boolean(name='BeingDeleted', example='false'),
      creationDate?: string(name='CreationDate', example='2018-04-02 15:59:06'),
      domainGroupId?: string(name='DomainGroupId', example='-1'),
      domainGroupName?: string(name='DomainGroupName'),
      domainGroupStatus?: string(name='DomainGroupStatus', example='COMPLETE'),
      modificationDate?: string(name='ModificationDate', example='2018-04-02 15:59:06'),
      totalNumber?: int32(name='TotalNumber', example='20'),
    }
  ](name='DomainGroup')
  }(name='Data'),
  requestId?: string(name='RequestId', example='80011ABC-F573-4795-B0E8-377BFBBA3422'),
}

model QueryDomainGroupListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainGroupListResponseBody(name='body'),
}

/**
 * @param request QueryDomainGroupListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainGroupListResponse
 */
async function queryDomainGroupListWithOptions(request: QueryDomainGroupListRequest, runtime: Util.RuntimeOptions): QueryDomainGroupListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainGroupName)) {
    query['DomainGroupName'] = request.domainGroupName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.showDeletingGroup)) {
    query['ShowDeletingGroup'] = request.showDeletingGroup;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainGroupList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDomainGroupListRequest
 * @return QueryDomainGroupListResponse
 */
async function queryDomainGroupList(request: QueryDomainGroupListRequest): QueryDomainGroupListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainGroupListWithOptions(request, runtime);
}

model QueryDomainListRequest {
  ccompany?: string(name='Ccompany', description='The name of the domain name registrant.', example='Guangzhou Jinye Renewable Resources Recycling Co., Ltd'),
  domainGroupId?: string(name='DomainGroupId', description='The ID of the domain name group.', example='123456'),
  domainName?: string(name='DomainName', description='The domain name that you want to search for.', example='test.com'),
  endExpirationDate?: long(name='EndExpirationDate', description='The end of the time range to query domain names based on expiration dates. Set the value to a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC. Only queries by day are supported.', example='1522080000000'),
  endRegistrationDate?: long(name='EndRegistrationDate', description='The end of the time range to query domain names based on registration dates. Set the value to a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC. Only queries by day are supported.', example='1522080000000'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese
*   **en**: English

Default value: **en**.', example='en'),
  orderByType?: string(name='OrderByType', description='The order of the information based on which the domain names are sorted, such as the registration date and expiration date. Valid values:

*   **ASC**: ascending order
*   **DESC**: descending order

>  If this parameter is not specified, the default value **DESC** is used.', example='ASC'),
  orderKeyType?: string(name='OrderKeyType', description='The field that you use to sort the domain names. Valid values:

*   **RegistrationDate**: registration date
*   **ExpirationDate**: expiration date

>  If this parameter is not specified, the domain names are sorted by the time when they were added to the database.', example='RegistrationDate'),
  pageNum?: int32(name='PageNum', description='The page number.

This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.

This parameter is required.', example='10'),
  productDomainType?: string(name='ProductDomainType', description='The type of the domain name. Valid values:

*   **New gTLD**: new generic top-level domain names
*   **gTLD**: generic top-level domain names
*   **ccTLD**: country code top-level domain names', example='New gTLD'),
  queryType?: string(name='QueryType', description='The category of the domain names that you want to query. Valid values:

*   **1**: the domain names that need to be renewed
*   **2**: the domain names that need to be redeemed', example='1'),
  resourceGroupId?: string(name='ResourceGroupId', description='The ID of the resource group.', example='rg-aek2indvyxgpfti'),
  startExpirationDate?: long(name='StartExpirationDate', description='The beginning of the time range to query domain names based on expiration dates. Set the value to a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC. Only queries by day are supported.', example='1522080000000'),
  startRegistrationDate?: long(name='StartRegistrationDate', description='The beginning of the time range to query domain names based on registration dates. Set the value to a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC. Only queries by day are supported.', example='1522080000000'),
  tag?: [ 
    {
      key?: string(name='Key', description='The key of the tag to add to the resource.', example='testKey'),
      value?: string(name='Value', description='The value of the tag to add to the resource.', example='testValue'),
    }
  ](name='Tag', description='The tags to add to the resource.'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client. Set the value to **127.0.0.1**.', example='127.0.0.1'),
}

model QueryDomainListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', description='The page number.', example='0'),
  data?: {
    domain?: [ 
    {
      ccompany?: string(name='Ccompany', description='The name of the domain name registrant.', example='Guangzhou Forest Advertising Decoration Co., LTD'),
      chgholderStatus?: string(name='ChgholderStatus'),
      domainAuditStatus?: string(name='DomainAuditStatus', description='The state of real-name verification for the domain name. Valid values:

*   **FAILED**: Real-name verification for the domain name fails.
*   **SUCCEED**: Real-name verification for the domain name is successful.
*   **NONAUDIT**: Real-name verification for the domain name is not performed.
*   **AUDITING**: Real-name verification for the domain name is in progress.', example='FAILED'),
      domainGroupId?: string(name='DomainGroupId', description='The ID of the domain name group.', example='123456'),
      domainGroupName?: string(name='DomainGroupName', description='The name of the domain name group.', example='测试分组'),
      domainName?: string(name='DomainName', description='The domain name.', example='test.com'),
      domainStatus?: string(name='DomainStatus', description='The state of the domain name. Valid values:

*   **1**: The domain name needs to be renewed.
*   **2**: The domain name needs to be redeemed.
*   **3**: The domain name is normal.', example='3'),
      domainType?: string(name='DomainType', description='The type of the domain name. Valid values:

*   **New gTLD**
*   **gTLD**
*   **ccTLD**', example='gTLD'),
      expirationCurrDateDiff?: int32(name='ExpirationCurrDateDiff', description='The number of days from the expiration date of the domain name to the current date.', example='-30'),
      expirationDate?: string(name='ExpirationDate', description='The time when the domain name expires.', example='2017-11-02 04:00:45'),
      expirationDateLong?: long(name='ExpirationDateLong', description='The validity period of the domain name. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1522080000000'),
      expirationDateStatus?: string(name='ExpirationDateStatus', description='Indicates whether the domain name expires. Valid values:

*   **1**: The domain name does not expire.
*   **2**: The domain name expires.', example='1'),
      instanceId?: string(name='InstanceId', description='The instance ID.', example='ST20151102120031118'),
      premium?: boolean(name='Premium', description='Indicates whether the domain name is a premium domain name.', example='true'),
      productId?: string(name='ProductId', description='The service ID.', example='2a'),
      registrantType?: string(name='RegistrantType', description='The registration type of the domain name. Valid values:

*   **1**: individual
*   **2**: enterprise', example='1'),
      registrationDate?: string(name='RegistrationDate', description='The time when the domain name was registered.', example='2017-11-02 04:00:45'),
      registrationDateLong?: long(name='RegistrationDateLong', description='Indicates how long the domain name has been registered. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1522080000000'),
      remark?: string(name='Remark', description='The remarks of the domain name.', example='备注'),
      resourceGroupId?: string(name='ResourceGroupId', description='The ID of the resource group to which the domain name belongs.', example='rg-aek2yyciz557g3q'),
      tag?: {
        tag?: [ 
        {
          key?: string(name='Key', description='The key of the tag added to the resource.', example='testKey'),
          value?: string(name='Value', description='The value of the tag added to the resource.', example='testValue'),
        }
      ](name='Tag')
      }(name='Tag', description='The tags added to the resource.'),
    }
  ](name='Domain')
  }(name='Data', description='The domain names.'),
  nextPage?: boolean(name='NextPage', description='Indicates whether the current page is followed by a page.', example='false'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.', example='5'),
  prePage?: boolean(name='PrePage', description='Indicates whether the current page is preceded by a page.', example='false'),
  requestId?: string(name='RequestId', description='The ID of the request.', example='B7AB5469-5E38-4AA9-A920-C65B7A9C8E6E'),
  totalItemNum?: int32(name='TotalItemNum', description='The total number of domain names returned.', example='1'),
  totalPageNum?: int32(name='TotalPageNum', description='The total number of pages returned.', example='1'),
}

model QueryDomainListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainListResponseBody(name='body'),
}

/**
 * @summary Queries a list of domain names within your Alibaba Cloud account by page.
 *
 * @param request QueryDomainListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainListResponse
 */
async function queryDomainListWithOptions(request: QueryDomainListRequest, runtime: Util.RuntimeOptions): QueryDomainListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.ccompany)) {
    query['Ccompany'] = request.ccompany;
  }
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.endExpirationDate)) {
    query['EndExpirationDate'] = request.endExpirationDate;
  }
  if (!Util.isUnset(request.endRegistrationDate)) {
    query['EndRegistrationDate'] = request.endRegistrationDate;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.orderByType)) {
    query['OrderByType'] = request.orderByType;
  }
  if (!Util.isUnset(request.orderKeyType)) {
    query['OrderKeyType'] = request.orderKeyType;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.productDomainType)) {
    query['ProductDomainType'] = request.productDomainType;
  }
  if (!Util.isUnset(request.queryType)) {
    query['QueryType'] = request.queryType;
  }
  if (!Util.isUnset(request.resourceGroupId)) {
    query['ResourceGroupId'] = request.resourceGroupId;
  }
  if (!Util.isUnset(request.startExpirationDate)) {
    query['StartExpirationDate'] = request.startExpirationDate;
  }
  if (!Util.isUnset(request.startRegistrationDate)) {
    query['StartRegistrationDate'] = request.startRegistrationDate;
  }
  if (!Util.isUnset(request.tag)) {
    query['Tag'] = request.tag;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary Queries a list of domain names within your Alibaba Cloud account by page.
 *
 * @param request QueryDomainListRequest
 * @return QueryDomainListResponse
 */
async function queryDomainList(request: QueryDomainListRequest): QueryDomainListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainListWithOptions(request, runtime);
}

model QueryDomainRealNameVerificationInfoRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='aliyundoc.com'),
  fetchImage?: boolean(name='FetchImage', example='false'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDomainRealNameVerificationInfoResponseBody = {
  domainName?: string(name='DomainName', example='aliyundoc.com'),
  identityCredential?: string(name='IdentityCredential', example='dGVzdA=='),
  identityCredentialNo?: string(name='IdentityCredentialNo', example='5****************9'),
  identityCredentialType?: string(name='IdentityCredentialType', example='SFZ'),
  identityCredentialUrl?: string(name='IdentityCredentialUrl', example='http://dbu-nap-p.oss-cn-hangzhou.aliyuncs.com/20190219/140692647406xxxx_5d6baea3e7314fd986afdd86e33exxxx.jpg'),
  instanceId?: string(name='InstanceId', example='S2019270W570****'),
  requestId?: string(name='RequestId', example='4DF9D693-0D5B-4EB7-8922-7ECA6BD59314'),
  submissionDate?: string(name='SubmissionDate', example='2018-03-28 00:41:42'),
}

model QueryDomainRealNameVerificationInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainRealNameVerificationInfoResponseBody(name='body'),
}

/**
 * @param request QueryDomainRealNameVerificationInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainRealNameVerificationInfoResponse
 */
async function queryDomainRealNameVerificationInfoWithOptions(request: QueryDomainRealNameVerificationInfoRequest, runtime: Util.RuntimeOptions): QueryDomainRealNameVerificationInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.fetchImage)) {
    query['FetchImage'] = request.fetchImage;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainRealNameVerificationInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDomainRealNameVerificationInfoRequest
 * @return QueryDomainRealNameVerificationInfoResponse
 */
async function queryDomainRealNameVerificationInfo(request: QueryDomainRealNameVerificationInfoRequest): QueryDomainRealNameVerificationInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainRealNameVerificationInfoWithOptions(request, runtime);
}

model QueryDomainSpecialBizDetailRequest {
  bizId?: long(name='BizId', description='The business ID.', example='123'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model QueryDomainSpecialBizDetailResponseBody = {
  allowRetry?: boolean(name='AllowRetry', description='Indicates whether retries are allowed.', example='False'),
  appName?: string(name='AppName', description='The name of the application for which the error code is returned.', example='test-com'),
  dynamicCode?: string(name='DynamicCode', description='The dynamic error code.', example='-'),
  dynamicMessage?: string(name='DynamicMessage', description='The dynamic error message.', example='-'),
  errorArgs?: [ any ](name='ErrorArgs', description='The array of error parameters that are returned.'),
  errorCode?: string(name='ErrorCode', description='The error code.'),
  errorMsg?: string(name='ErrorMsg', description='The error message.', example='110001'),
  httpStatusCode?: int32(name='HttpStatusCode', description='The HTTP status code that is directly returned.', example='200'),
  module?: {
    auditMsg?: string(name='AuditMsg', description='The review information.'),
    bizName?: string(name='BizName', description='The business name.'),
    bizNo?: string(name='BizNo', description='The business ID.', example='A83E1D74-E46B-505C-947A-8C6B7E41C012'),
    bizStatus?: string(name='BizStatus', description='The business status.', example='REGISTRANT_VSP_AUDIT_SUCCESS'),
    bizType?: string(name='BizType', description='The business type.', example='govRegister'),
    createTime?: long(name='CreateTime', description='The time when the business was created.', example='2023-01-17 11:31:10'),
    domainName?: string(name='DomainName', description='The domain name.', example='test003.cn'),
    domainSpecialBizContact?: {
      bizId?: long(name='BizId', description='The business ID.', example='258'),
      CCity?: string(name='CCity', description='The city.'),
      CCompany?: string(name='CCompany', description='The organization name.'),
      CCountry?: string(name='CCountry', description='The country code.', example='CN'),
      CName?: string(name='CName', description='The contact name.'),
      CProvince?: string(name='CProvince', description='The province.'),
      CVenu?: string(name='CVenu', description='The address.'),
      ECity?: string(name='ECity', description='The city in English.', example='an shan Shi'),
      ECompany?: string(name='ECompany', description='The organization name in English.', example='hebeihuiheguandaozhizaoyouxiangongsi'),
      EName?: string(name='EName', description='The contact name in English.', example='tong da wei'),
      EProvince?: string(name='EProvince', description='The province in English.', example='liao ning'),
      EVenu?: string(name='EVenu', description='The address in English.', example='tie xi qu xin kai jie 59-4 hao'),
      email?: string(name='Email', description='The email address.', example='username@example.com'),
      extend?: string(name='Extend', description='The extended information.', example='-'),
      faxArea?: string(name='FaxArea', description='The fax country code.', example='86'),
      faxExt?: string(name='FaxExt', description='The fax extension number.', example='61284565'),
      faxMain?: string(name='FaxMain', description='The fax number with an area code or mobile number.', example='16604121234'),
      mobile?: string(name='Mobile', description='The mobile number.', example='156********'),
      postalcode?: string(name='Postalcode', description='The zip code.', example='100000'),
      regType?: int32(name='RegType', description='The contact type. Valid values: 1: individual. 2: enterprise.', example='1'),
      registrantId?: string(name='RegistrantId', description='The registrant ID.', example='121000002****'),
      telArea?: string(name='TelArea', description='The calling code of the country or region where the domain name contact is located.', example='86'),
      telExt?: string(name='TelExt', description='The telephone extension number.', example='61284565'),
      telMain?: string(name='TelMain', description='The landline number with an area code or mobile number.', example='16604121234'),
      vspContactId?: string(name='VspContactId', description='The VSP contact ID.', example='121000001****'),
    }(name='DomainSpecialBizContact', description='The contact information.'),
    domainSpecialBizCredentials?: [ 
      {
        bizId?: long(name='BizId', description='The ID of the associated workflow.', example='T20220831150014000001'),
        credentialNo?: string(name='CredentialNo', description='The certificate number.', example='4111111111111110**'),
        credentialType?: string(name='CredentialType', description='The certificate type.', example='SFZ'),
        credentialUrl?: string(name='CredentialUrl', description='The certificate URL.', example='http://test.oss-cn-hangzhou.aliyuncs.com/20170522/1219541161213057_070445190.jpg'),
        domainName?: string(name='DomainName', description='The domain name.', example='test003.cn'),
        holderCert?: int32(name='HolderCert', description='Indicates whether the certificate belongs to the registrant.', example='1'),
        saleId?: string(name='SaleId', description='The instance ID.', example='S20172315BJ37809'),
      }
    ](name='DomainSpecialBizCredentials', description='The certificate information.'),
    domainSpecialOrderResult?: {
      actionType?: string(name='ActionType', description='The cost type.', example='activate'),
      orderAmount?: double(name='OrderAmount', description='The amount of the order.', example='0.0'),
      orderCurrency?: string(name='OrderCurrency', description='The currency.', example='CNY'),
      orderId?: string(name='OrderId', description='The order ID.', example='S201601060123456'),
      orderStatus?: string(name='OrderStatus', description='The order status.', example='ORDER_WAIT_PAY'),
      orderTime?: string(name='OrderTime', description='The time when the order was placed.', example='2023-09-19T14:28Z'),
      orderYear?: int32(name='OrderYear', description='The validity period.', example='1'),
      saleId?: string(name='SaleId', description='The instance ID.', example='S201601063418719'),
      subOrderId?: string(name='SubOrderId', description='The suborder ID.', example='S201601061234567'),
    }(name='DomainSpecialOrderResult', description='The information about the order.'),
    gmtCreate?: string(name='GmtCreate', description='The time when the business was created.', example='2023-03-21 15:10:04.0'),
    gmtModified?: string(name='GmtModified', description='The time when the business was modified.', example='2023-03-21 15:10:04.0'),
    id?: long(name='Id', description='The primary key.', example='34083'),
    orderId?: string(name='OrderId', description='The order ID.', example='123'),
    productId?: string(name='ProductId', description='The service ID.', example='1'),
    saleId?: string(name='SaleId', description='The instance ID.', example='S20172315BJ37809'),
    status?: int32(name='Status', description='The business status.', example='1'),
    statusDesc?: string(name='StatusDesc', description='The description of business status.'),
    updateTime?: long(name='UpdateTime', description='The time when the business was updated.', example='2020-11-17 18:11:15'),
    userId?: string(name='UserId', description='The user ID.', example='121000000****'),
  }(name='Module', description='The returned data.'),
  requestId?: string(name='RequestId', description='The request ID.', example='A83E1D74-E46B-505C-947A-8C6B7E41C011'),
  success?: boolean(name='Success', description='Indicates whether the request is successful. Valid values:

*   **true**
*   **false**', example='True'),
  synchro?: boolean(name='Synchro', description='Indicates whether to perform synchronous processing.', example='true'),
}

model QueryDomainSpecialBizDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainSpecialBizDetailResponseBody(name='body'),
}

/**
 * @summary 查询域名特殊业务详情
 *
 * @param request QueryDomainSpecialBizDetailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainSpecialBizDetailResponse
 */
async function queryDomainSpecialBizDetailWithOptions(request: QueryDomainSpecialBizDetailRequest, runtime: Util.RuntimeOptions): QueryDomainSpecialBizDetailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.bizId)) {
    body['BizId'] = request.bizId;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainSpecialBizDetail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 查询域名特殊业务详情
 *
 * @param request QueryDomainSpecialBizDetailRequest
 * @return QueryDomainSpecialBizDetailResponse
 */
async function queryDomainSpecialBizDetail(request: QueryDomainSpecialBizDetailRequest): QueryDomainSpecialBizDetailResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainSpecialBizDetailWithOptions(request, runtime);
}

model QueryDomainSpecialBizInfoByDomainRequest {
  bizType?: string(name='BizType', description='The business type.

This parameter is required.', example='govRegister'),
  domainName?: string(name='DomainName', description='The domain name.

This parameter is required.', example='test003.cn'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model QueryDomainSpecialBizInfoByDomainResponseBody = {
  allowRetry?: boolean(name='AllowRetry', description='Indicates whether retries are allowed.', example='False'),
  appName?: string(name='AppName', description='The name of the application for which the error code is returned.', example='test-com'),
  dynamicCode?: string(name='DynamicCode', description='The dynamic error code.', example='-'),
  dynamicMessage?: string(name='DynamicMessage', description='The dynamic error message.', example='-'),
  errorArgs?: [ any ](name='ErrorArgs', description='The array of error parameters that are returned.'),
  errorCode?: string(name='ErrorCode', description='The error code.'),
  errorMsg?: string(name='ErrorMsg', description='The error message.', example='110001'),
  httpStatusCode?: int32(name='HttpStatusCode', description='The HTTP status code that is directly returned.', example='200'),
  module?: {
    auditMsg?: string(name='AuditMsg', description='The review information.'),
    bizName?: string(name='BizName', description='The business name.'),
    bizNo?: string(name='BizNo', description='The business ID.', example='A83E1D74-E46B-505C-947A-8C6B7E41C012'),
    bizStatus?: string(name='BizStatus', description='The business status.', example='REGISTRANT_VSP_AUDIT_SUCCESS'),
    bizType?: string(name='BizType', description='The business type.', example='govRegister'),
    createTime?: long(name='CreateTime', description='The time when the business was created.', example='2023-01-17 11:31:10'),
    domainName?: string(name='DomainName', description='The domain name.', example='test003.cn'),
    domainSpecialBizContact?: {
      bizId?: long(name='BizId', description='The business ID.', example='258'),
      CCity?: string(name='CCity', description='The city.'),
      CCompany?: string(name='CCompany', description='The organization name.'),
      CCountry?: string(name='CCountry', description='The country code.', example='CN'),
      CName?: string(name='CName', description='The contact name.'),
      CProvince?: string(name='CProvince', description='The province.'),
      CVenu?: string(name='CVenu', description='The address.'),
      ECity?: string(name='ECity', description='The city in English.', example='an shan Shi'),
      ECompany?: string(name='ECompany', description='The organization name in English.', example='hebeihuiheguandaozhizaoyouxiangongsi'),
      EName?: string(name='EName', description='The contact name in English.', example='tong da wei'),
      EProvince?: string(name='EProvince', description='The province in English.', example='liao ning'),
      EVenu?: string(name='EVenu', description='The address in English.', example='tie xi qu xin kai jie 59-4 hao'),
      email?: string(name='Email', description='The email address.', example='username@example.com'),
      extend?: string(name='Extend', description='The extended information.', example='-'),
      faxArea?: string(name='FaxArea', description='The fax country code.', example='86'),
      faxExt?: string(name='FaxExt', description='The fax extension number.', example='61284565'),
      faxMain?: string(name='FaxMain', description='The fax number with an area code or mobile number.', example='16604121234'),
      mobile?: string(name='Mobile', description='The mobile number.', example='156********'),
      postalcode?: string(name='Postalcode', description='The zip code.', example='100000'),
      regType?: int32(name='RegType', description='The contact type. Valid values: 1: individual. 2: enterprise.', example='1'),
      registrantId?: string(name='RegistrantId', description='The registrant ID.', example='121000002****'),
      telArea?: string(name='TelArea', description='The calling code of the country or region where the domain name contact is located.', example='86'),
      telExt?: string(name='TelExt', description='The telephone extension number.', example='2756'),
      telMain?: string(name='TelMain', description='The landline number with an area code or mobile number.', example='16604121234'),
      vspContactId?: string(name='VspContactId', description='The VSP contact ID.', example='121000001****'),
    }(name='DomainSpecialBizContact', description='The contact information.'),
    domainSpecialBizCredentials?: [ 
      {
        bizId?: long(name='BizId', description='The ID of the associated workflow.', example='T20220831150014000001'),
        credentialNo?: string(name='CredentialNo', description='The certificate number.', example='4111111111111110**'),
        credentialType?: string(name='CredentialType', description='The certificate type.', example='SFZ'),
        credentialUrl?: string(name='CredentialUrl', description='The certificate URL.', example='http://test.oss-cn-hangzhou.aliyuncs.com/20170522/1219541161213057_070445190.jpg'),
        domainName?: string(name='DomainName', description='The domain name.', example='test003.cn'),
        holderCert?: int32(name='HolderCert', description='Indicates whether the certificate belongs to the registrant.', example='1'),
        saleId?: string(name='SaleId', description='The instance ID.', example='S20172315BJ37809'),
      }
    ](name='DomainSpecialBizCredentials', description='The certificate information.'),
    gmtCreate?: string(name='GmtCreate', description='The time when the business was created.', example='2023-03-21 15:10:04.0'),
    gmtModified?: string(name='GmtModified', description='The time when the business was modified.', example='2023-03-21 15:10:04.0'),
    id?: long(name='Id', description='The primary key.', example='34083'),
    orderId?: string(name='OrderId', description='The order ID.', example='123'),
    productId?: string(name='ProductId', description='The service ID.', example='1'),
    saleId?: string(name='SaleId', description='The instance ID.', example='S20172315BJ37809'),
    status?: int32(name='Status', description='The business status.', example='1'),
    statusDesc?: string(name='StatusDesc', description='The description of business status.'),
    updateTime?: long(name='UpdateTime', description='The time when the business was updated.', example='2020-11-17 18:11:15'),
    userId?: string(name='UserId', description='The user ID.', example='121000000****'),
  }(name='Module', description='The returned data.'),
  requestId?: string(name='RequestId', description='The request ID.', example='97663DFF-D24D-55AE-A577-6CC5AF20B732'),
  success?: boolean(name='Success', description='Indicates whether the request is successful. Valid values: true and false', example='True'),
  synchro?: boolean(name='Synchro', description='Indicates whether to perform synchronous processing.', example='true'),
}

model QueryDomainSpecialBizInfoByDomainResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainSpecialBizInfoByDomainResponseBody(name='body'),
}

/**
 * @summary 通过域名查询域名特殊业务详情
 *
 * @param request QueryDomainSpecialBizInfoByDomainRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainSpecialBizInfoByDomainResponse
 */
async function queryDomainSpecialBizInfoByDomainWithOptions(request: QueryDomainSpecialBizInfoByDomainRequest, runtime: Util.RuntimeOptions): QueryDomainSpecialBizInfoByDomainResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.bizType)) {
    body['BizType'] = request.bizType;
  }
  if (!Util.isUnset(request.domainName)) {
    body['DomainName'] = request.domainName;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainSpecialBizInfoByDomain',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 通过域名查询域名特殊业务详情
 *
 * @param request QueryDomainSpecialBizInfoByDomainRequest
 * @return QueryDomainSpecialBizInfoByDomainResponse
 */
async function queryDomainSpecialBizInfoByDomain(request: QueryDomainSpecialBizInfoByDomainRequest): QueryDomainSpecialBizInfoByDomainResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainSpecialBizInfoByDomainWithOptions(request, runtime);
}

model QueryDomainSuffixRequest {
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryDomainSuffixResponseBody = {
  requestId?: string(name='RequestId', example='D1C9DE44-1D7F-4F66-9653-00000'),
  suffixList?: {
    suffix?: [ string ](name='Suffix')
  }(name='SuffixList'),
}

model QueryDomainSuffixResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDomainSuffixResponseBody(name='body'),
}

/**
 * @param request QueryDomainSuffixRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDomainSuffixResponse
 */
async function queryDomainSuffixWithOptions(request: QueryDomainSuffixRequest, runtime: Util.RuntimeOptions): QueryDomainSuffixResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryDomainSuffix',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryDomainSuffixRequest
 * @return QueryDomainSuffixResponse
 */
async function queryDomainSuffix(request: QueryDomainSuffixRequest): QueryDomainSuffixResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryDomainSuffixWithOptions(request, runtime);
}

model QueryEmailVerificationRequest {
  email?: string(name='Email', description='This parameter is required.', example='abc@aliyun.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryEmailVerificationResponseBody = {
  confirmIp?: string(name='ConfirmIp', example='42.*.*.31'),
  email?: string(name='Email', example='abc@aliyun.com'),
  emailVerificationNo?: string(name='EmailVerificationNo', example='72b36ba0572e423bbb3f19640896****'),
  gmtCreate?: string(name='GmtCreate', example='2019-02-19 16:38:07'),
  gmtModified?: string(name='GmtModified', example='2019-02-19 16:40:38'),
  requestId?: string(name='RequestId', example='FC4F7D02-8A83-4E37-B935-2D48A1B8423E'),
  sendIp?: string(name='SendIp', example='42.*.*.115'),
  tokenSendTime?: string(name='TokenSendTime', example='2019-02-19 16:38:07'),
  userId?: string(name='UserId', example='140692647406****'),
  verificationStatus?: int32(name='VerificationStatus', example='1'),
  verificationTime?: string(name='VerificationTime', example='2019-02-19 16:40:38'),
}

model QueryEmailVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryEmailVerificationResponseBody(name='body'),
}

/**
 * @summary 查询邮箱验证状态
 *
 * @param request QueryEmailVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryEmailVerificationResponse
 */
async function queryEmailVerificationWithOptions(request: QueryEmailVerificationRequest, runtime: Util.RuntimeOptions): QueryEmailVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryEmailVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 查询邮箱验证状态
 *
 * @param request QueryEmailVerificationRequest
 * @return QueryEmailVerificationResponse
 */
async function queryEmailVerification(request: QueryEmailVerificationRequest): QueryEmailVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryEmailVerificationWithOptions(request, runtime);
}

model QueryEnsAssociationRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.luxe'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryEnsAssociationResponseBody = {
  address?: string(name='Address', example='0x123456789012345678901234567890123456****'),
  requestId?: string(name='RequestId', example='3ECD5439-39A2-477D-9A19-64FCA1F77EEB'),
}

model QueryEnsAssociationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryEnsAssociationResponseBody(name='body'),
}

/**
 * @param request QueryEnsAssociationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryEnsAssociationResponse
 */
async function queryEnsAssociationWithOptions(request: QueryEnsAssociationRequest, runtime: Util.RuntimeOptions): QueryEnsAssociationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryEnsAssociation',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryEnsAssociationRequest
 * @return QueryEnsAssociationResponse
 */
async function queryEnsAssociation(request: QueryEnsAssociationRequest): QueryEnsAssociationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryEnsAssociationWithOptions(request, runtime);
}

model QueryFailReasonForDomainRealNameVerificationRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  realNameVerificationAction?: string(name='RealNameVerificationAction', description='This parameter is required.', example='ACTIVATE'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryFailReasonForDomainRealNameVerificationResponseBody = {
  data?: [ 
    {
      date?: string(name='Date', example='2017-03-17 11:08:02'),
      domainNameVerificationStatus?: string(name='DomainNameVerificationStatus', example='SUCCEED'),
      failReason?: string(name='FailReason'),
    }
  ](name='Data'),
  requestId?: string(name='RequestId', example='1F1BA893-AD33-4248-8CB8-1657E3733052'),
}

model QueryFailReasonForDomainRealNameVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryFailReasonForDomainRealNameVerificationResponseBody(name='body'),
}

/**
 * @param request QueryFailReasonForDomainRealNameVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryFailReasonForDomainRealNameVerificationResponse
 */
async function queryFailReasonForDomainRealNameVerificationWithOptions(request: QueryFailReasonForDomainRealNameVerificationRequest, runtime: Util.RuntimeOptions): QueryFailReasonForDomainRealNameVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.realNameVerificationAction)) {
    query['RealNameVerificationAction'] = request.realNameVerificationAction;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryFailReasonForDomainRealNameVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryFailReasonForDomainRealNameVerificationRequest
 * @return QueryFailReasonForDomainRealNameVerificationResponse
 */
async function queryFailReasonForDomainRealNameVerification(request: QueryFailReasonForDomainRealNameVerificationRequest): QueryFailReasonForDomainRealNameVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryFailReasonForDomainRealNameVerificationWithOptions(request, runtime);
}

model QueryFailReasonForRegistrantProfileRealNameVerificationRequest {
  lang?: string(name='Lang', example='en'),
  registrantProfileID?: long(name='RegistrantProfileID', description='This parameter is required.', example='1234567'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryFailReasonForRegistrantProfileRealNameVerificationResponseBody = {
  data?: [ 
    {
      date?: string(name='Date', example='2017-03-17 11:08:02'),
      failReason?: string(name='FailReason'),
    }
  ](name='Data'),
  requestId?: string(name='RequestId', example='548C407F-AEA2-4B5D-90DF-EC11EBB1D76F'),
}

model QueryFailReasonForRegistrantProfileRealNameVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryFailReasonForRegistrantProfileRealNameVerificationResponseBody(name='body'),
}

/**
 * @param request QueryFailReasonForRegistrantProfileRealNameVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryFailReasonForRegistrantProfileRealNameVerificationResponse
 */
async function queryFailReasonForRegistrantProfileRealNameVerificationWithOptions(request: QueryFailReasonForRegistrantProfileRealNameVerificationRequest, runtime: Util.RuntimeOptions): QueryFailReasonForRegistrantProfileRealNameVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileID)) {
    query['RegistrantProfileID'] = request.registrantProfileID;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryFailReasonForRegistrantProfileRealNameVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryFailReasonForRegistrantProfileRealNameVerificationRequest
 * @return QueryFailReasonForRegistrantProfileRealNameVerificationResponse
 */
async function queryFailReasonForRegistrantProfileRealNameVerification(request: QueryFailReasonForRegistrantProfileRealNameVerificationRequest): QueryFailReasonForRegistrantProfileRealNameVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryFailReasonForRegistrantProfileRealNameVerificationWithOptions(request, runtime);
}

model QueryFailingReasonListForQualificationRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  limit?: int32(name='Limit', description='This parameter is required.', example='10'),
  qualificationType?: string(name='QualificationType', description='This parameter is required.', example='knet'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryFailingReasonListForQualificationResponseBody = {
  data?: [ 
    {
      date?: string(name='Date', example='2017-03-17 11:08:02'),
      failReason?: string(name='FailReason'),
    }
  ](name='Data'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
}

model QueryFailingReasonListForQualificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryFailingReasonListForQualificationResponseBody(name='body'),
}

/**
 * @param request QueryFailingReasonListForQualificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryFailingReasonListForQualificationResponse
 */
async function queryFailingReasonListForQualificationWithOptions(request: QueryFailingReasonListForQualificationRequest, runtime: Util.RuntimeOptions): QueryFailingReasonListForQualificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.limit)) {
    query['Limit'] = request.limit;
  }
  if (!Util.isUnset(request.qualificationType)) {
    query['QualificationType'] = request.qualificationType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryFailingReasonListForQualification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryFailingReasonListForQualificationRequest
 * @return QueryFailingReasonListForQualificationResponse
 */
async function queryFailingReasonListForQualification(request: QueryFailingReasonListForQualificationRequest): QueryFailingReasonListForQualificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryFailingReasonListForQualificationWithOptions(request, runtime);
}

model QueryIntlFixedPriceOrderListRequest {
  bizId?: string(name='BizId', example='T2024061115213700****'),
  currentPage?: long(name='CurrentPage', example='1'),
  pageSize?: long(name='PageSize', example='10'),
  status?: long(name='Status', example='6'),
}

model QueryIntlFixedPriceOrderListResponseBody = {
  module?: {
    currentPageNum?: int32(name='CurrentPageNum'),
    data?: [ 
      {
        bizId?: string(name='BizId'),
        createTime?: long(name='CreateTime'),
        domain?: string(name='Domain'),
        orderType?: int32(name='OrderType'),
        price?: long(name='Price'),
        status?: int32(name='Status'),
        updateTime?: long(name='UpdateTime'),
        userId?: string(name='UserId'),
      }
    ](name='Data'),
    pageSize?: int32(name='PageSize'),
    totalItemNum?: int32(name='TotalItemNum'),
    totalPageNum?: int32(name='TotalPageNum'),
  }(name='Module'),
  requestId?: string(name='RequestId', example='D6CB3623-4726-4947-AC2B-2C6E673B447C'),
}

model QueryIntlFixedPriceOrderListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryIntlFixedPriceOrderListResponseBody(name='body'),
}

/**
 * @summary 查询国际一口价订单列表
 *
 * @param request QueryIntlFixedPriceOrderListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryIntlFixedPriceOrderListResponse
 */
async function queryIntlFixedPriceOrderListWithOptions(request: QueryIntlFixedPriceOrderListRequest, runtime: Util.RuntimeOptions): QueryIntlFixedPriceOrderListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.bizId)) {
    query['BizId'] = request.bizId;
  }
  if (!Util.isUnset(request.currentPage)) {
    query['CurrentPage'] = request.currentPage;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryIntlFixedPriceOrderList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 查询国际一口价订单列表
 *
 * @param request QueryIntlFixedPriceOrderListRequest
 * @return QueryIntlFixedPriceOrderListResponse
 */
async function queryIntlFixedPriceOrderList(request: QueryIntlFixedPriceOrderListRequest): QueryIntlFixedPriceOrderListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryIntlFixedPriceOrderListWithOptions(request, runtime);
}

model QueryLocalEnsAssociationRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.luxe'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryLocalEnsAssociationResponseBody = {
  address?: string(name='Address', example='3ECD5439-39A2-477D-9A19-64FCA1F77EEB'),
  requestId?: string(name='RequestId', example='0x1234567890123456789012345678901234567890'),
}

model QueryLocalEnsAssociationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryLocalEnsAssociationResponseBody(name='body'),
}

/**
 * @param request QueryLocalEnsAssociationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryLocalEnsAssociationResponse
 */
async function queryLocalEnsAssociationWithOptions(request: QueryLocalEnsAssociationRequest, runtime: Util.RuntimeOptions): QueryLocalEnsAssociationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryLocalEnsAssociation',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryLocalEnsAssociationRequest
 * @return QueryLocalEnsAssociationResponse
 */
async function queryLocalEnsAssociation(request: QueryLocalEnsAssociationRequest): QueryLocalEnsAssociationResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryLocalEnsAssociationWithOptions(request, runtime);
}

model QueryOperationAuditInfoDetailRequest {
  auditRecordId?: long(name='AuditRecordId', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
}

model QueryOperationAuditInfoDetailResponseBody = {
  auditInfo?: string(name='AuditInfo'),
  auditStatus?: int32(name='AuditStatus', example='1'),
  auditType?: int32(name='AuditType', example='1'),
  businessName?: string(name='BusinessName'),
  createTime?: long(name='CreateTime', example='1581919010100'),
  domainName?: string(name='DomainName', example='example.com,aliyundoc.com'),
  id?: string(name='Id', example='1'),
  remark?: string(name='Remark'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-40EC-8035-4B12FEFD7D1L'),
  updateTime?: long(name='UpdateTime', example='1581919010101'),
}

model QueryOperationAuditInfoDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryOperationAuditInfoDetailResponseBody(name='body'),
}

/**
 * @param request QueryOperationAuditInfoDetailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryOperationAuditInfoDetailResponse
 */
async function queryOperationAuditInfoDetailWithOptions(request: QueryOperationAuditInfoDetailRequest, runtime: Util.RuntimeOptions): QueryOperationAuditInfoDetailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditRecordId)) {
    query['AuditRecordId'] = request.auditRecordId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryOperationAuditInfoDetail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryOperationAuditInfoDetailRequest
 * @return QueryOperationAuditInfoDetailResponse
 */
async function queryOperationAuditInfoDetail(request: QueryOperationAuditInfoDetailRequest): QueryOperationAuditInfoDetailResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryOperationAuditInfoDetailWithOptions(request, runtime);
}

model QueryOperationAuditInfoListRequest {
  auditStatus?: int32(name='AuditStatus', example='1'),
  auditType?: int32(name='AuditType', example='1'),
  domainName?: string(name='DomainName', example='example.com'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', example='1'),
  pageSize?: int32(name='PageSize', example='20'),
}

model QueryOperationAuditInfoListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='2'),
  data?: [ 
    {
      auditInfo?: string(name='AuditInfo'),
      auditStatus?: int32(name='AuditStatus', example='1'),
      auditType?: int32(name='AuditType', example='1'),
      businessName?: string(name='BusinessName'),
      createTime?: long(name='CreateTime', example='1581919010101'),
      domainName?: string(name='DomainName', example='example.com,aliyundoc.com'),
      id?: long(name='Id', example='1'),
      remark?: string(name='Remark'),
      updateTime?: long(name='UpdateTime', example='1581919010101'),
    }
  ](name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='20'),
  prePage?: boolean(name='PrePage', example='true'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-40EC-8035-4B12FEFD7D48'),
  totalItemNum?: int32(name='TotalItemNum', example='199'),
  totalPageNum?: int32(name='TotalPageNum', example='10'),
}

model QueryOperationAuditInfoListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryOperationAuditInfoListResponseBody(name='body'),
}

/**
 * @param request QueryOperationAuditInfoListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryOperationAuditInfoListResponse
 */
async function queryOperationAuditInfoListWithOptions(request: QueryOperationAuditInfoListRequest, runtime: Util.RuntimeOptions): QueryOperationAuditInfoListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditStatus)) {
    query['AuditStatus'] = request.auditStatus;
  }
  if (!Util.isUnset(request.auditType)) {
    query['AuditType'] = request.auditType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryOperationAuditInfoList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryOperationAuditInfoListRequest
 * @return QueryOperationAuditInfoListResponse
 */
async function queryOperationAuditInfoList(request: QueryOperationAuditInfoListRequest): QueryOperationAuditInfoListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryOperationAuditInfoListWithOptions(request, runtime);
}

model QueryQualificationDetailRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  qualificationType?: string(name='QualificationType', description='This parameter is required.', example='knet'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryQualificationDetailResponseBody = {
  auditStatus?: int32(name='AuditStatus', example='1'),
  credentials?: {
    qualificationCredential?: [ 
    {
      credentialNo?: string(name='CredentialNo', example='92610725MA7G2E****'),
      credentialType?: string(name='CredentialType', example='SHSQB'),
      credentialUrl?: string(name='CredentialUrl'),
    }
  ](name='QualificationCredential')
  }(name='Credentials'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
  trackId?: string(name='TrackId', example='943a1662898a****0acbdbeca91'),
}

model QueryQualificationDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryQualificationDetailResponseBody(name='body'),
}

/**
 * @param request QueryQualificationDetailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryQualificationDetailResponse
 */
async function queryQualificationDetailWithOptions(request: QueryQualificationDetailRequest, runtime: Util.RuntimeOptions): QueryQualificationDetailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.qualificationType)) {
    query['QualificationType'] = request.qualificationType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryQualificationDetail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryQualificationDetailRequest
 * @return QueryQualificationDetailResponse
 */
async function queryQualificationDetail(request: QueryQualificationDetailRequest): QueryQualificationDetailResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryQualificationDetailWithOptions(request, runtime);
}

model QueryRegistrantProfileRealNameVerificationInfoRequest {
  fetchImage?: boolean(name='FetchImage', example='false'),
  lang?: string(name='Lang', example='en'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='1234567'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryRegistrantProfileRealNameVerificationInfoResponseBody = {
  identityCredential?: string(name='IdentityCredential', example='dGVzdA=='),
  identityCredentialNo?: string(name='IdentityCredentialNo', example='4111111111111110**'),
  identityCredentialType?: string(name='IdentityCredentialType', example='SFZ'),
  identityCredentialUrl?: string(name='IdentityCredentialUrl', example='http://test.oss-cn-hangzhou.aliyuncs.com/20170522/1219541161213057_070445190.jpg'),
  modificationDate?: string(name='ModificationDate', example='2017-05-22 19:04:49'),
  registrantProfileId?: long(name='RegistrantProfileId', example='1234567'),
  requestId?: string(name='RequestId', example='4D73432C-7600-4779-ACBB-C3B5CA145D32'),
  submissionDate?: string(name='SubmissionDate', example='2017-05-22 19:04:49'),
}

model QueryRegistrantProfileRealNameVerificationInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryRegistrantProfileRealNameVerificationInfoResponseBody(name='body'),
}

/**
 * @param request QueryRegistrantProfileRealNameVerificationInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryRegistrantProfileRealNameVerificationInfoResponse
 */
async function queryRegistrantProfileRealNameVerificationInfoWithOptions(request: QueryRegistrantProfileRealNameVerificationInfoRequest, runtime: Util.RuntimeOptions): QueryRegistrantProfileRealNameVerificationInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.fetchImage)) {
    query['FetchImage'] = request.fetchImage;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryRegistrantProfileRealNameVerificationInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryRegistrantProfileRealNameVerificationInfoRequest
 * @return QueryRegistrantProfileRealNameVerificationInfoResponse
 */
async function queryRegistrantProfileRealNameVerificationInfo(request: QueryRegistrantProfileRealNameVerificationInfoRequest): QueryRegistrantProfileRealNameVerificationInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryRegistrantProfileRealNameVerificationInfoWithOptions(request, runtime);
}

model QueryRegistrantProfilesRequest {
  defaultRegistrantProfile?: boolean(name='DefaultRegistrantProfile', example='false'),
  email?: string(name='Email', example='username@example.com'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', example='1'),
  pageSize?: int32(name='PageSize', example='500'),
  realNameStatus?: string(name='RealNameStatus', example='SUCCEED'),
  registrantOrganization?: string(name='RegistrantOrganization', example='li si'),
  registrantProfileId?: long(name='RegistrantProfileId', example='1234567'),
  registrantProfileType?: string(name='RegistrantProfileType', example='common'),
  registrantType?: string(name='RegistrantType', example='1'),
  remark?: string(name='Remark'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model QueryRegistrantProfilesResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='2'),
  prePage?: boolean(name='PrePage', example='false'),
  registrantProfiles?: {
    registrantProfile?: [ 
    {
      address?: string(name='Address', example='zhe jiang sheng hang zhou shi shi li qu shi li zhen shi li da sha 1001 hao'),
      city?: string(name='City', example='hang zhou shi'),
      country?: string(name='Country', example='CN'),
      createTime?: string(name='CreateTime', example='2019-02-18 10:46:47'),
      credentialNo?: string(name='CredentialNo'),
      credentialType?: string(name='CredentialType'),
      defaultRegistrantProfile?: boolean(name='DefaultRegistrantProfile', example='false'),
      email?: string(name='Email', example='82106****@qq.com'),
      emailVerificationStatus?: int32(name='EmailVerificationStatus', example='1'),
      postalCode?: string(name='PostalCode', example='310024'),
      province?: string(name='Province', example='zhe jiang'),
      realNameStatus?: string(name='RealNameStatus', example='SUCCEED'),
      registrantName?: string(name='RegistrantName', example='li si'),
      registrantOrganization?: string(name='RegistrantOrganization', example='li si'),
      registrantProfileId?: long(name='RegistrantProfileId', example='1000001'),
      registrantProfileType?: string(name='RegistrantProfileType', example='common'),
      registrantType?: string(name='RegistrantType', example='1'),
      remark?: string(name='Remark'),
      telArea?: string(name='TelArea', example='86'),
      telExt?: string(name='TelExt', example='1234'),
      telephone?: string(name='Telephone', example='1829756****'),
      updateTime?: string(name='UpdateTime', example='2019-03-15 15:32:45'),
      zhAddress?: string(name='ZhAddress'),
      zhCity?: string(name='ZhCity'),
      zhProvince?: string(name='ZhProvince'),
      zhRegistrantName?: string(name='ZhRegistrantName'),
      zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
    }
  ](name='RegistrantProfile')
  }(name='RegistrantProfiles'),
  requestId?: string(name='RequestId', example='94053D79-7455-4F71-BF06-20EB2DEDE6BD'),
  totalItemNum?: int32(name='TotalItemNum', example='9'),
  totalPageNum?: int32(name='TotalPageNum', example='1'),
}

model QueryRegistrantProfilesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryRegistrantProfilesResponseBody(name='body'),
}

/**
 * @param request QueryRegistrantProfilesRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryRegistrantProfilesResponse
 */
async function queryRegistrantProfilesWithOptions(request: QueryRegistrantProfilesRequest, runtime: Util.RuntimeOptions): QueryRegistrantProfilesResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.defaultRegistrantProfile)) {
    query['DefaultRegistrantProfile'] = request.defaultRegistrantProfile;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.realNameStatus)) {
    query['RealNameStatus'] = request.realNameStatus;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.registrantProfileType)) {
    query['RegistrantProfileType'] = request.registrantProfileType;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.remark)) {
    query['Remark'] = request.remark;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryRegistrantProfiles',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryRegistrantProfilesRequest
 * @return QueryRegistrantProfilesResponse
 */
async function queryRegistrantProfiles(request: QueryRegistrantProfilesRequest): QueryRegistrantProfilesResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryRegistrantProfilesWithOptions(request, runtime);
}

model QueryServerLockRequest {
  instanceId?: string(name='InstanceId', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryServerLockResponseBody = {
  domainInstanceId?: string(name='DomainInstanceId', example='S20190N1DAI4****'),
  domainName?: string(name='DomainName', example='example.com'),
  expireDate?: string(name='ExpireDate', example='2030-07-10 17:37:36'),
  gmtCreate?: string(name='GmtCreate', example='2021-07-10 17:37:36'),
  gmtModified?: string(name='GmtModified', example='2021-07-10 17:37:36'),
  lockInstanceId?: string(name='LockInstanceId', example='S2021591IQ28****'),
  lockProductId?: string(name='LockProductId', example='1807**'),
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-****-8035-4B12FEFD7D48'),
  serverLockStatus?: int32(name='ServerLockStatus', example='2'),
  startDate?: string(name='StartDate', example='2021-07-10 17:37:36'),
  userId?: string(name='UserId', example='121000000****'),
}

model QueryServerLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryServerLockResponseBody(name='body'),
}

/**
 * @param request QueryServerLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryServerLockResponse
 */
async function queryServerLockWithOptions(request: QueryServerLockRequest, runtime: Util.RuntimeOptions): QueryServerLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryServerLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryServerLockRequest
 * @return QueryServerLockResponse
 */
async function queryServerLock(request: QueryServerLockRequest): QueryServerLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryServerLockWithOptions(request, runtime);
}

model QueryTaskDetailHistoryRequest {
  domainName?: string(name='DomainName', example='example.com'),
  domainNameCursor?: string(name='DomainNameCursor', example='example.com'),
  lang?: string(name='Lang', example='en'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='1'),
  taskDetailNoCursor?: string(name='TaskDetailNoCursor', example='75addb07-28a3-450e-b5ec'),
  taskNo?: string(name='TaskNo', description='This parameter is required.', example='75addb07-28a3-450e-b5ec-test'),
  taskStatus?: int32(name='TaskStatus', example='0'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTaskDetailHistoryResponseBody = {
  currentPageCursor?: {
    createTime?: string(name='CreateTime', example='2019-07-30 00:00:00'),
    domainName?: string(name='DomainName', example='example.com'),
    errorMsg?: string(name='ErrorMsg'),
    instanceId?: string(name='InstanceId', example='S1234456789'),
    taskDetailNo?: string(name='TaskDetailNo', example='75addb07-28a3-450e-b5ec-2342'),
    taskNo?: string(name='TaskNo', example='75addb07-28a3-450e-b5ec-test'),
    taskStatus?: string(name='TaskStatus', example='EXECUTE_SUCCESS'),
    taskStatusCode?: int32(name='TaskStatusCode', example='2'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
    tryCount?: int32(name='TryCount', example='0'),
    updateTime?: string(name='UpdateTime', example='2019-07-30 00:00:00'),
  }(name='CurrentPageCursor'),
  nextPageCursor?: {
    createTime?: string(name='CreateTime', example='2019-07-30 00:00:00'),
    domainName?: string(name='DomainName', example='example.com'),
    errorMsg?: string(name='ErrorMsg'),
    instanceId?: string(name='InstanceId', example='S1234567890'),
    taskDetailNo?: string(name='TaskDetailNo', example='75addb07-28a3-450e-b5ec-2424'),
    taskNo?: string(name='TaskNo', example='75addb07-28a3-450e-b5ec-test'),
    taskStatus?: string(name='TaskStatus', example='EXECUTE_FAILURE'),
    taskStatusCode?: int32(name='TaskStatusCode', example='3'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
    tryCount?: int32(name='TryCount', example='5'),
    updateTime?: string(name='UpdateTime', example='2019-07-30 00:00:00'),
  }(name='NextPageCursor'),
  objects?: [ 
    {
      createTime?: string(name='CreateTime', example='2019-07-30 00:00:00'),
      domainName?: string(name='DomainName', example='example.com'),
      errorMsg?: string(name='ErrorMsg'),
      instanceId?: string(name='InstanceId', example='S123456789'),
      taskDetailNo?: string(name='TaskDetailNo', example='75addb07-28a3-450e-b5ec-4234'),
      taskNo?: string(name='TaskNo', example='75addb07-28a3-450e-b5ec-test'),
      taskStatus?: string(name='TaskStatus', example='EXECUTE_FAILURE'),
      taskStatusCode?: int32(name='TaskStatusCode', example='3'),
      taskType?: string(name='TaskType', example='CHG_DNS'),
      taskTypeDescription?: string(name='TaskTypeDescription'),
      tryCount?: int32(name='TryCount', example='5'),
      updateTime?: string(name='UpdateTime', example='2019-07-30 00:00:00'),
    }
  ](name='Objects'),
  pageSize?: int32(name='PageSize', example='2'),
  prePageCursor?: {
    createTime?: string(name='CreateTime', example='2019-07-30 00:00:00'),
    domainName?: string(name='DomainName', example='example.com'),
    errorMsg?: string(name='ErrorMsg'),
    instanceId?: string(name='InstanceId', example='S123456789'),
    taskDetailNo?: string(name='TaskDetailNo', example='75addb07-28a3-450e-b5ec-123'),
    taskNo?: string(name='TaskNo', example='75addb07-28a3-450e-b5ec-test'),
    taskStatus?: string(name='TaskStatus', example='EXECUTE_FAILURE'),
    taskStatusCode?: int32(name='TaskStatusCode', example='3'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
    tryCount?: int32(name='TryCount', example='5'),
    updateTime?: string(name='UpdateTime', example='2019-07-30 00:00:00'),
  }(name='PrePageCursor'),
  requestId?: string(name='RequestId', example='548CAE74-88F8-402F-8C12-97E747389C51'),
}

model QueryTaskDetailHistoryResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTaskDetailHistoryResponseBody(name='body'),
}

/**
 * @param request QueryTaskDetailHistoryRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTaskDetailHistoryResponse
 */
async function queryTaskDetailHistoryWithOptions(request: QueryTaskDetailHistoryRequest, runtime: Util.RuntimeOptions): QueryTaskDetailHistoryResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.domainNameCursor)) {
    query['DomainNameCursor'] = request.domainNameCursor;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.taskDetailNoCursor)) {
    query['TaskDetailNoCursor'] = request.taskDetailNoCursor;
  }
  if (!Util.isUnset(request.taskNo)) {
    query['TaskNo'] = request.taskNo;
  }
  if (!Util.isUnset(request.taskStatus)) {
    query['TaskStatus'] = request.taskStatus;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTaskDetailHistory',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTaskDetailHistoryRequest
 * @return QueryTaskDetailHistoryResponse
 */
async function queryTaskDetailHistory(request: QueryTaskDetailHistoryRequest): QueryTaskDetailHistoryResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTaskDetailHistoryWithOptions(request, runtime);
}

model QueryTaskDetailListRequest {
  domainName?: string(name='DomainName', example='example.com'),
  instanceId?: string(name='InstanceId', example='S20179H1BBI9test'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='1'),
  taskNo?: string(name='TaskNo', description='This parameter is required.', example='75addb07-28a3-450e-b5ec-test'),
  taskStatus?: int32(name='TaskStatus', example='2'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.0'),
}

model QueryTaskDetailListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    taskDetail?: [ 
    {
      createTime?: string(name='CreateTime', example='2018-01-25 20:46:57'),
      domainName?: string(name='DomainName', example='example.com'),
      errorMsg?: string(name='ErrorMsg', example='The operation is successful.'),
      failReason?: string(name='FailReason'),
      instanceId?: string(name='InstanceId', example='S20179H1BBI9test'),
      taskDetailNo?: string(name='TaskDetailNo', example='75addb07-28a3-450e-b5ec-test'),
      taskNo?: string(name='TaskNo', example='60d6e201-8ee5-47ab-8fdc-test'),
      taskResult?: string(name='TaskResult', example='12345'),
      taskStatus?: string(name='TaskStatus', example='EXECUTE_SUCCESS'),
      taskStatusCode?: int32(name='TaskStatusCode', example='2'),
      taskType?: string(name='TaskType', example='ORDER_RENEW'),
      taskTypeDescription?: string(name='TaskTypeDescription'),
      tryCount?: int32(name='TryCount', example='0'),
      updateTime?: string(name='UpdateTime', example='2018-01-25 20:47:01'),
    }
  ](name='TaskDetail')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='2'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='6A2320E4-D870-49C9-A6DC-test'),
  totalItemNum?: int32(name='TotalItemNum', example='1'),
  totalPageNum?: int32(name='TotalPageNum', example='1'),
}

model QueryTaskDetailListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTaskDetailListResponseBody(name='body'),
}

/**
 * @param request QueryTaskDetailListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTaskDetailListResponse
 */
async function queryTaskDetailListWithOptions(request: QueryTaskDetailListRequest, runtime: Util.RuntimeOptions): QueryTaskDetailListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.taskNo)) {
    query['TaskNo'] = request.taskNo;
  }
  if (!Util.isUnset(request.taskStatus)) {
    query['TaskStatus'] = request.taskStatus;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTaskDetailList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTaskDetailListRequest
 * @return QueryTaskDetailListResponse
 */
async function queryTaskDetailList(request: QueryTaskDetailListRequest): QueryTaskDetailListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTaskDetailListWithOptions(request, runtime);
}

model QueryTaskInfoHistoryRequest {
  beginCreateTime?: long(name='BeginCreateTime', example='1522080000000'),
  createTimeCursor?: long(name='CreateTimeCursor', example='1522080000000'),
  endCreateTime?: long(name='EndCreateTime', example='1522080000000'),
  lang?: string(name='Lang', example='en'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='2'),
  taskNoCursor?: string(name='TaskNoCursor', example='aa634d3f-927e-4d17-9d2c-test'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTaskInfoHistoryResponseBody = {
  currentPageCursor?: {
    clientip?: string(name='Clientip', example='127.0.0.1'),
    createTime?: string(name='CreateTime', example='2017-11-01 17:22:51'),
    createTimeLong?: long(name='CreateTimeLong', example='1509528171000'),
    taskNo?: string(name='TaskNo', example='aa634d3f-927e-4d17-9d2c-test'),
    taskNum?: int32(name='TaskNum', example='1'),
    taskStatus?: string(name='TaskStatus', example='COMPLETE'),
    taskStatusCode?: int32(name='TaskStatusCode', example='3'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
  }(name='CurrentPageCursor'),
  nextPageCursor?: {
    clientip?: string(name='Clientip', example='127.0.0.1'),
    createTime?: string(name='CreateTime', example='2017-10-27 13:07:07'),
    createTimeLong?: long(name='CreateTimeLong', example='1509080827000'),
    taskNo?: string(name='TaskNo', example='8f112aa1-98be-48c3-82f8-test'),
    taskNum?: int32(name='TaskNum', example='15'),
    taskStatus?: string(name='TaskStatus', example='COMPLETE'),
    taskStatusCode?: int32(name='TaskStatusCode', example='3'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
  }(name='NextPageCursor'),
  objects?: [ 
    {
      clientip?: string(name='Clientip', example='127.0.0.1'),
      createTime?: string(name='CreateTime', example='2017-11-01 17:22:51'),
      createTimeLong?: long(name='CreateTimeLong', example='1509528171000'),
      taskNo?: string(name='TaskNo', example='aa634d3f-927e-4d17-9d2c-test'),
      taskNum?: int32(name='TaskNum', example='1'),
      taskStatus?: string(name='TaskStatus', example='COMPLETE'),
      taskStatusCode?: int32(name='TaskStatusCode', example='3'),
      taskType?: string(name='TaskType', example='CHG_DNS'),
      taskTypeDescription?: string(name='TaskTypeDescription'),
    }
  ](name='Objects'),
  pageSize?: int32(name='PageSize', example='2'),
  prePageCursor?: {
    clientip?: string(name='Clientip', example='127.0.0.1'),
    createTime?: string(name='CreateTime', example='2017-11-01 17:19:47'),
    createTimeLong?: long(name='CreateTimeLong', example='1509527987000'),
    taskNo?: string(name='TaskNo', example='f9baa3d5-33b9-4c81-8847-test'),
    taskNum?: int32(name='TaskNum', example='15'),
    taskStatus?: string(name='TaskStatus', example='COMPLETE'),
    taskStatusCode?: int32(name='TaskStatusCode', example='3'),
    taskType?: string(name='TaskType', example='CHG_DNS'),
    taskTypeDescription?: string(name='TaskTypeDescription'),
  }(name='PrePageCursor'),
  requestId?: string(name='RequestId', example='EB3FCCBA-CA1F-4D31-9F34-test'),
}

model QueryTaskInfoHistoryResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTaskInfoHistoryResponseBody(name='body'),
}

/**
 * @param request QueryTaskInfoHistoryRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTaskInfoHistoryResponse
 */
async function queryTaskInfoHistoryWithOptions(request: QueryTaskInfoHistoryRequest, runtime: Util.RuntimeOptions): QueryTaskInfoHistoryResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.beginCreateTime)) {
    query['BeginCreateTime'] = request.beginCreateTime;
  }
  if (!Util.isUnset(request.createTimeCursor)) {
    query['CreateTimeCursor'] = request.createTimeCursor;
  }
  if (!Util.isUnset(request.endCreateTime)) {
    query['EndCreateTime'] = request.endCreateTime;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.taskNoCursor)) {
    query['TaskNoCursor'] = request.taskNoCursor;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTaskInfoHistory',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTaskInfoHistoryRequest
 * @return QueryTaskInfoHistoryResponse
 */
async function queryTaskInfoHistory(request: QueryTaskInfoHistoryRequest): QueryTaskInfoHistoryResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTaskInfoHistoryWithOptions(request, runtime);
}

model QueryTaskListRequest {
  beginCreateTime?: long(name='BeginCreateTime', example='1522080000000'),
  endCreateTime?: long(name='EndCreateTime', example='1522080000000'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='2'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTaskListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    taskInfo?: [ 
    {
      clientip?: string(name='Clientip', example='127.0.0.1'),
      createTime?: string(name='CreateTime', example='Dec 26,2017 11:00:54'),
      taskCancelStatus?: string(name='TaskCancelStatus', example='INIT'),
      taskCancelStatusCode?: int32(name='TaskCancelStatusCode', example='0'),
      taskNo?: string(name='TaskNo', example='8b1cd755-4928-4b02-adee-e5d41d7b1939'),
      taskNum?: int32(name='TaskNum', example='1'),
      taskStatus?: string(name='TaskStatus', example='COMPLETE'),
      taskStatusCode?: int32(name='TaskStatusCode', example='1'),
      taskType?: string(name='TaskType', example='CREATE_DNSHOST'),
      taskTypeDescription?: string(name='TaskTypeDescription'),
    }
  ](name='TaskInfo')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='2'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='8D7D294A-8E99-481F-B64C-017EFC793059'),
  totalItemNum?: int32(name='TotalItemNum', example='43'),
  totalPageNum?: int32(name='TotalPageNum', example='22'),
}

model QueryTaskListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTaskListResponseBody(name='body'),
}

/**
 * @param request QueryTaskListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTaskListResponse
 */
async function queryTaskListWithOptions(request: QueryTaskListRequest, runtime: Util.RuntimeOptions): QueryTaskListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.beginCreateTime)) {
    query['BeginCreateTime'] = request.beginCreateTime;
  }
  if (!Util.isUnset(request.endCreateTime)) {
    query['EndCreateTime'] = request.endCreateTime;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTaskList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTaskListRequest
 * @return QueryTaskListResponse
 */
async function queryTaskList(request: QueryTaskListRequest): QueryTaskListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTaskListWithOptions(request, runtime);
}

model QueryTransferInByInstanceIdRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181T0WLI85212'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTransferInByInstanceIdResponseBody = {
  domainName?: string(name='DomainName', example='example.com'),
  email?: string(name='Email', example='username@example.com'),
  expirationDate?: string(name='ExpirationDate', example='2018-03-28 00:41:42'),
  expirationDateLong?: long(name='ExpirationDateLong', example='1514428524669'),
  instanceId?: string(name='InstanceId', example='S20181T0WLI85212'),
  modificationDate?: string(name='ModificationDate', example='2018-03-28 00:41:42'),
  modificationDateLong?: long(name='ModificationDateLong', example='1514428524669'),
  needMailCheck?: boolean(name='NeedMailCheck', example='true'),
  progressBarType?: int32(name='ProgressBarType', example='0'),
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
  resultCode?: string(name='ResultCode', example='clientCancelled'),
  resultDate?: string(name='ResultDate', example='2018-03-28 00:41:42'),
  resultDateLong?: long(name='ResultDateLong', example='1514428524669'),
  resultMsg?: string(name='ResultMsg'),
  simpleTransferInStatus?: string(name='SimpleTransferInStatus', example='SUCCESS'),
  status?: int32(name='Status', example='11'),
  submissionDate?: string(name='SubmissionDate', example='2018-03-28 00:41:42'),
  submissionDateLong?: long(name='SubmissionDateLong', example='1514428524669'),
  transferAuthorizationCodeSubmissionDate?: string(name='TransferAuthorizationCodeSubmissionDate', example='2018-03-28 00:41:42'),
  transferAuthorizationCodeSubmissionDateLong?: long(name='TransferAuthorizationCodeSubmissionDateLong', example='1514428524669'),
  userId?: string(name='UserId', example='123456'),
  whoisMailStatus?: boolean(name='WhoisMailStatus', example='true'),
}

model QueryTransferInByInstanceIdResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTransferInByInstanceIdResponseBody(name='body'),
}

/**
 * @param request QueryTransferInByInstanceIdRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTransferInByInstanceIdResponse
 */
async function queryTransferInByInstanceIdWithOptions(request: QueryTransferInByInstanceIdRequest, runtime: Util.RuntimeOptions): QueryTransferInByInstanceIdResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTransferInByInstanceId',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTransferInByInstanceIdRequest
 * @return QueryTransferInByInstanceIdResponse
 */
async function queryTransferInByInstanceId(request: QueryTransferInByInstanceIdRequest): QueryTransferInByInstanceIdResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTransferInByInstanceIdWithOptions(request, runtime);
}

model QueryTransferInListRequest {
  domainName?: string(name='DomainName', example='example.com'),
  lang?: string(name='Lang', example='en'),
  pageNum?: int32(name='PageNum', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='20'),
  simpleTransferInStatus?: string(name='SimpleTransferInStatus', example='INIT'),
  submissionEndDate?: long(name='SubmissionEndDate', example='1514428524669'),
  submissionStartDate?: long(name='SubmissionStartDate', example='1514428524669'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTransferInListResponseBody = {
  currentPageNum?: int32(name='CurrentPageNum', example='1'),
  data?: {
    transferInInfo?: [ 
    {
      domainName?: string(name='DomainName', example='example.com'),
      email?: string(name='Email', example='username@example.com'),
      expirationDate?: string(name='ExpirationDate', example='2018-03-28 00:41:42'),
      expirationDateLong?: long(name='ExpirationDateLong', example='1514428524669'),
      instanceId?: string(name='InstanceId', example='S20181T0WLI85212'),
      modificationDate?: string(name='ModificationDate', example='2018-03-28 00:41:42'),
      modificationDateLong?: long(name='ModificationDateLong', example='1514428524669'),
      needMailCheck?: boolean(name='NeedMailCheck', example='true'),
      progressBarType?: int32(name='ProgressBarType', example='0'),
      resultCode?: string(name='ResultCode', example='clientCancelled'),
      resultDate?: string(name='ResultDate', example='2018-03-28 00:41:42'),
      resultDateLong?: long(name='ResultDateLong', example='1514428524669'),
      resultMsg?: string(name='ResultMsg'),
      simpleTransferInStatus?: string(name='SimpleTransferInStatus', example='FAIL'),
      status?: int32(name='Status', example='11'),
      submissionDate?: string(name='SubmissionDate', example='2018-03-28 00:41:42'),
      submissionDateLong?: long(name='SubmissionDateLong', example='1514428524669'),
      transferAuthorizationCodeSubmissionDate?: string(name='TransferAuthorizationCodeSubmissionDate', example='2018-03-28 00:41:42'),
      transferAuthorizationCodeSubmissionDateLong?: long(name='TransferAuthorizationCodeSubmissionDateLong', example='1514428524669'),
      userId?: string(name='UserId', example='123456'),
      whoisMailStatus?: boolean(name='WhoisMailStatus', example='true'),
    }
  ](name='TransferInInfo')
  }(name='Data'),
  nextPage?: boolean(name='NextPage', example='true'),
  pageSize?: int32(name='PageSize', example='20'),
  prePage?: boolean(name='PrePage', example='false'),
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
  totalItemNum?: int32(name='TotalItemNum', example='40'),
  totalPageNum?: int32(name='TotalPageNum', example='2'),
}

model QueryTransferInListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTransferInListResponseBody(name='body'),
}

/**
 * @param request QueryTransferInListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTransferInListResponse
 */
async function queryTransferInListWithOptions(request: QueryTransferInListRequest, runtime: Util.RuntimeOptions): QueryTransferInListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageNum)) {
    query['PageNum'] = request.pageNum;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.simpleTransferInStatus)) {
    query['SimpleTransferInStatus'] = request.simpleTransferInStatus;
  }
  if (!Util.isUnset(request.submissionEndDate)) {
    query['SubmissionEndDate'] = request.submissionEndDate;
  }
  if (!Util.isUnset(request.submissionStartDate)) {
    query['SubmissionStartDate'] = request.submissionStartDate;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTransferInList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTransferInListRequest
 * @return QueryTransferInListResponse
 */
async function queryTransferInList(request: QueryTransferInListRequest): QueryTransferInListResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTransferInListWithOptions(request, runtime);
}

model QueryTransferOutInfoRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model QueryTransferOutInfoResponseBody = {
  email?: string(name='Email', example='username@example.com'),
  expirationDate?: string(name='ExpirationDate', example='2018-04-13 19:57:56'),
  pendingRequestDate?: string(name='PendingRequestDate', example='2018-04-13 19:57:56'),
  requestId?: string(name='RequestId', example='BBEC5A50-DFDF-482E-8343-B4EB0105E055'),
  resultCode?: string(name='ResultCode', example='clientRejected'),
  resultMsg?: string(name='ResultMsg', example='Transfer out rejected'),
  status?: int32(name='Status', example='8'),
  transferAuthorizationCodeSendDate?: string(name='TransferAuthorizationCodeSendDate', example='2018-04-13 19:57:56'),
}

model QueryTransferOutInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryTransferOutInfoResponseBody(name='body'),
}

/**
 * @param request QueryTransferOutInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryTransferOutInfoResponse
 */
async function queryTransferOutInfoWithOptions(request: QueryTransferOutInfoRequest, runtime: Util.RuntimeOptions): QueryTransferOutInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'QueryTransferOutInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request QueryTransferOutInfoRequest
 * @return QueryTransferOutInfoResponse
 */
async function queryTransferOutInfo(request: QueryTransferOutInfoRequest): QueryTransferOutInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return queryTransferOutInfoWithOptions(request, runtime);
}

model RegistrantProfileRealNameVerificationRequest {
  identityCredential?: string(name='IdentityCredential', description='This parameter is required.', example='dGVzdA=='),
  identityCredentialNo?: string(name='IdentityCredentialNo', description='This parameter is required.', example='43012512345678****'),
  identityCredentialType?: string(name='IdentityCredentialType', description='This parameter is required.', example='SFZ'),
  lang?: string(name='Lang', example='en'),
  registrantProfileID?: long(name='RegistrantProfileID', description='This parameter is required.', example='1234567'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model RegistrantProfileRealNameVerificationResponseBody = {
  requestId?: string(name='RequestId', example='51D584A2-0CCD-4336-AD7D-1AD4C67B5545'),
}

model RegistrantProfileRealNameVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: RegistrantProfileRealNameVerificationResponseBody(name='body'),
}

/**
 * @summary 保存联系人模板实名资料
 *
 * @param request RegistrantProfileRealNameVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return RegistrantProfileRealNameVerificationResponse
 */
async function registrantProfileRealNameVerificationWithOptions(request: RegistrantProfileRealNameVerificationRequest, runtime: Util.RuntimeOptions): RegistrantProfileRealNameVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.identityCredentialNo)) {
    query['IdentityCredentialNo'] = request.identityCredentialNo;
  }
  if (!Util.isUnset(request.identityCredentialType)) {
    query['IdentityCredentialType'] = request.identityCredentialType;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileID)) {
    query['RegistrantProfileID'] = request.registrantProfileID;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.identityCredential)) {
    body['IdentityCredential'] = request.identityCredential;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'RegistrantProfileRealNameVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存联系人模板实名资料
 *
 * @param request RegistrantProfileRealNameVerificationRequest
 * @return RegistrantProfileRealNameVerificationResponse
 */
async function registrantProfileRealNameVerification(request: RegistrantProfileRealNameVerificationRequest): RegistrantProfileRealNameVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return registrantProfileRealNameVerificationWithOptions(request, runtime);
}

model ResendEmailVerificationRequest {
  email?: string(name='Email', description='This parameter is required.', example='test1@aliyun.com,test2@aliyun.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model ResendEmailVerificationResponseBody = {
  failList?: [ 
    {
      code?: string(name='Code', example='SendTokenQuotaExceeded'),
      email?: string(name='Email', example='test1@aliyun.com'),
      message?: string(name='Message', example='The maximum number of attempts allowed to send the email verification link is exceeded.'),
    }
  ](name='FailList'),
  requestId?: string(name='RequestId', example='0EA54E99-DB48-4CE3-A099-6ED8E451B8AC'),
  successList?: [ 
    {
      code?: string(name='Code', example='Success'),
      email?: string(name='Email', example='test2@aliyun.com'),
      message?: string(name='Message', example='Success'),
    }
  ](name='SuccessList'),
}

model ResendEmailVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ResendEmailVerificationResponseBody(name='body'),
}

/**
 * @summary 重新发送验证邮件
 *
 * @param request ResendEmailVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ResendEmailVerificationResponse
 */
async function resendEmailVerificationWithOptions(request: ResendEmailVerificationRequest, runtime: Util.RuntimeOptions): ResendEmailVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ResendEmailVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 重新发送验证邮件
 *
 * @param request ResendEmailVerificationRequest
 * @return ResendEmailVerificationResponse
 */
async function resendEmailVerification(request: ResendEmailVerificationRequest): ResendEmailVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return resendEmailVerificationWithOptions(request, runtime);
}

model ResetQualificationVerificationRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model ResetQualificationVerificationResponseBody = {
  requestId?: string(name='RequestId', example='D6CB3623-4726-4947-AC2B-2C6E673B447C'),
}

model ResetQualificationVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ResetQualificationVerificationResponseBody(name='body'),
}

/**
 * @summary 重置资质审核状态
 *
 * @param request ResetQualificationVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ResetQualificationVerificationResponse
 */
async function resetQualificationVerificationWithOptions(request: ResetQualificationVerificationRequest, runtime: Util.RuntimeOptions): ResetQualificationVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ResetQualificationVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 重置资质审核状态
 *
 * @param request ResetQualificationVerificationRequest
 * @return ResetQualificationVerificationResponse
 */
async function resetQualificationVerification(request: ResetQualificationVerificationRequest): ResetQualificationVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return resetQualificationVerificationWithOptions(request, runtime);
}

model SaveBatchDomainRemarkRequest {
  instanceIds?: string(name='InstanceIds', description='This parameter is required.', example='S12344567'),
  lang?: string(name='Lang', example='en'),
  remark?: string(name='Remark', example='MyRemarkInfo'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchDomainRemarkResponseBody = {
  requestId?: string(name='RequestId', example='4189E320-961E-4786-8E15-0000'),
}

model SaveBatchDomainRemarkResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchDomainRemarkResponseBody(name='body'),
}

/**
 * @summary 批量保存域名备注信息
 *
 * @param request SaveBatchDomainRemarkRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchDomainRemarkResponse
 */
async function saveBatchDomainRemarkWithOptions(request: SaveBatchDomainRemarkRequest, runtime: Util.RuntimeOptions): SaveBatchDomainRemarkResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceIds)) {
    query['InstanceIds'] = request.instanceIds;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.remark)) {
    query['Remark'] = request.remark;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchDomainRemark',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 批量保存域名备注信息
 *
 * @param request SaveBatchDomainRemarkRequest
 * @return SaveBatchDomainRemarkResponse
 */
async function saveBatchDomainRemark(request: SaveBatchDomainRemarkRequest): SaveBatchDomainRemarkResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchDomainRemarkWithOptions(request, runtime);
}

model SaveBatchTaskForApplyQuickTransferOutOpenlyRequest {
  domainNames?: [ string ](name='DomainNames'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForApplyQuickTransferOutOpenlyResponseBody = {
  requestId?: string(name='RequestId', example='D6CB3623-4726-4947-AC2B-2C6E673B447C'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForApplyQuickTransferOutOpenlyResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForApplyQuickTransferOutOpenlyResponseBody(name='body'),
}

/**
 * @summary 批量申请域名快速转出
 *
 * @param request SaveBatchTaskForApplyQuickTransferOutOpenlyRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForApplyQuickTransferOutOpenlyResponse
 */
async function saveBatchTaskForApplyQuickTransferOutOpenlyWithOptions(request: SaveBatchTaskForApplyQuickTransferOutOpenlyRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForApplyQuickTransferOutOpenlyResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainNames)) {
    query['DomainNames'] = request.domainNames;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForApplyQuickTransferOutOpenly',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 批量申请域名快速转出
 *
 * @param request SaveBatchTaskForApplyQuickTransferOutOpenlyRequest
 * @return SaveBatchTaskForApplyQuickTransferOutOpenlyResponse
 */
async function saveBatchTaskForApplyQuickTransferOutOpenly(request: SaveBatchTaskForApplyQuickTransferOutOpenlyRequest): SaveBatchTaskForApplyQuickTransferOutOpenlyResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForApplyQuickTransferOutOpenlyWithOptions(request, runtime);
}

model SaveBatchTaskForCreatingOrderActivateRequest {
  couponNo?: string(name='CouponNo', example='123456'),
  lang?: string(name='Lang', example='en'),
  orderActivateParam?: [ 
    {
      address?: string(name='Address', example='chao yan qu *** dasha *** hao'),
      aliyunDns?: boolean(name='AliyunDns', example='true'),
      city?: string(name='City', example='bei jing shi'),
      country?: string(name='Country', example='CN'),
      dns1?: string(name='Dns1', example='ns2.aliyun.com'),
      dns2?: string(name='Dns2', example='ns1.aliyun.com'),
      domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
      email?: string(name='Email', example='username@example.com'),
      enableDomainProxy?: boolean(name='EnableDomainProxy', example='true'),
      permitPremiumActivation?: boolean(name='PermitPremiumActivation', example='true'),
      postalCode?: string(name='PostalCode', example='102629'),
      province?: string(name='Province', example='bei jing'),
      registrantName?: string(name='RegistrantName', example='zhang san'),
      registrantOrganization?: string(name='RegistrantOrganization', example='zhang san'),
      registrantProfileId?: long(name='RegistrantProfileId', example='000000'),
      registrantType?: string(name='RegistrantType', example='1'),
      resourceGroupId?: string(name='ResourceGroupId', example='rg-XX'),
      subscriptionDuration?: int32(name='SubscriptionDuration', example='1'),
      telArea?: string(name='TelArea', example='86'),
      telExt?: string(name='TelExt', example='1234'),
      telephone?: string(name='Telephone', example='1820000****'),
      trademarkDomainActivation?: boolean(name='TrademarkDomainActivation', example='false'),
      zhAddress?: string(name='ZhAddress'),
      zhCity?: string(name='ZhCity'),
      zhProvince?: string(name='ZhProvince'),
      zhRegistrantName?: string(name='ZhRegistrantName'),
      zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
    }
  ](name='OrderActivateParam', description='This parameter is required.'),
  promotionNo?: string(name='PromotionNo', example='123124'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForCreatingOrderActivateResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForCreatingOrderActivateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForCreatingOrderActivateResponseBody(name='body'),
}

/**
 * @summary 保存批量任务-注册订单
 *
 * @param request SaveBatchTaskForCreatingOrderActivateRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForCreatingOrderActivateResponse
 */
async function saveBatchTaskForCreatingOrderActivateWithOptions(request: SaveBatchTaskForCreatingOrderActivateRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForCreatingOrderActivateResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.orderActivateParam)) {
    query['OrderActivateParam'] = request.orderActivateParam;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForCreatingOrderActivate',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存批量任务-注册订单
 *
 * @param request SaveBatchTaskForCreatingOrderActivateRequest
 * @return SaveBatchTaskForCreatingOrderActivateResponse
 */
async function saveBatchTaskForCreatingOrderActivate(request: SaveBatchTaskForCreatingOrderActivateRequest): SaveBatchTaskForCreatingOrderActivateResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForCreatingOrderActivateWithOptions(request, runtime);
}

model SaveBatchTaskForCreatingOrderRedeemRequest {
  couponNo?: string(name='CouponNo', example='123123'),
  lang?: string(name='Lang', example='en'),
  orderRedeemParam?: [ 
    {
      currentExpirationDate?: long(name='CurrentExpirationDate', example='000000'),
      domainName?: string(name='DomainName', example='Aliyun.com'),
    }
  ](name='OrderRedeemParam', description='This parameter is required.'),
  promotionNo?: string(name='PromotionNo', example='123213123'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForCreatingOrderRedeemResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForCreatingOrderRedeemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForCreatingOrderRedeemResponseBody(name='body'),
}

/**
 * @param request SaveBatchTaskForCreatingOrderRedeemRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForCreatingOrderRedeemResponse
 */
async function saveBatchTaskForCreatingOrderRedeemWithOptions(request: SaveBatchTaskForCreatingOrderRedeemRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForCreatingOrderRedeemResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.orderRedeemParam)) {
    query['OrderRedeemParam'] = request.orderRedeemParam;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForCreatingOrderRedeem',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveBatchTaskForCreatingOrderRedeemRequest
 * @return SaveBatchTaskForCreatingOrderRedeemResponse
 */
async function saveBatchTaskForCreatingOrderRedeem(request: SaveBatchTaskForCreatingOrderRedeemRequest): SaveBatchTaskForCreatingOrderRedeemResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForCreatingOrderRedeemWithOptions(request, runtime);
}

model SaveBatchTaskForCreatingOrderRenewRequest {
  couponNo?: string(name='CouponNo', example='12312412'),
  lang?: string(name='Lang', example='en'),
  orderRenewParam?: [ 
    {
      currentExpirationDate?: long(name='CurrentExpirationDate', example='1522080000000'),
      domainName?: string(name='DomainName', example='Aliyun.com'),
      subscriptionDuration?: int32(name='SubscriptionDuration', example='1'),
    }
  ](name='OrderRenewParam', description='This parameter is required.'),
  promotionNo?: string(name='PromotionNo', example='123123123'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForCreatingOrderRenewResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForCreatingOrderRenewResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForCreatingOrderRenewResponseBody(name='body'),
}

/**
 * @summary 保存批量任务-续费订单
 *
 * @param request SaveBatchTaskForCreatingOrderRenewRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForCreatingOrderRenewResponse
 */
async function saveBatchTaskForCreatingOrderRenewWithOptions(request: SaveBatchTaskForCreatingOrderRenewRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForCreatingOrderRenewResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.orderRenewParam)) {
    query['OrderRenewParam'] = request.orderRenewParam;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForCreatingOrderRenew',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存批量任务-续费订单
 *
 * @param request SaveBatchTaskForCreatingOrderRenewRequest
 * @return SaveBatchTaskForCreatingOrderRenewResponse
 */
async function saveBatchTaskForCreatingOrderRenew(request: SaveBatchTaskForCreatingOrderRenewRequest): SaveBatchTaskForCreatingOrderRenewResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForCreatingOrderRenewWithOptions(request, runtime);
}

model SaveBatchTaskForCreatingOrderTransferRequest {
  couponNo?: string(name='CouponNo', example='123123'),
  lang?: string(name='Lang', example='en'),
  orderTransferParam?: [ 
    {
      authorizationCode?: string(name='AuthorizationCode', example='testCode'),
      domainName?: string(name='DomainName', example='example.com'),
      permitPremiumTransfer?: boolean(name='PermitPremiumTransfer', example='false'),
      registrantProfileId?: long(name='RegistrantProfileId', example='123456'),
    }
  ](name='OrderTransferParam', description='This parameter is required.'),
  promotionNo?: string(name='PromotionNo', example='123123'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForCreatingOrderTransferResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveBatchTaskForCreatingOrderTransferResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForCreatingOrderTransferResponseBody(name='body'),
}

/**
 * @param request SaveBatchTaskForCreatingOrderTransferRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForCreatingOrderTransferResponse
 */
async function saveBatchTaskForCreatingOrderTransferWithOptions(request: SaveBatchTaskForCreatingOrderTransferRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForCreatingOrderTransferResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.orderTransferParam)) {
    query['OrderTransferParam'] = request.orderTransferParam;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForCreatingOrderTransfer',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveBatchTaskForCreatingOrderTransferRequest
 * @return SaveBatchTaskForCreatingOrderTransferResponse
 */
async function saveBatchTaskForCreatingOrderTransfer(request: SaveBatchTaskForCreatingOrderTransferRequest): SaveBatchTaskForCreatingOrderTransferResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForCreatingOrderTransferWithOptions(request, runtime);
}

model SaveBatchTaskForDomainNameProxyServiceRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='test1.com,test2.com,test3.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForDomainNameProxyServiceResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f54923'),
}

model SaveBatchTaskForDomainNameProxyServiceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForDomainNameProxyServiceResponseBody(name='body'),
}

/**
 * @summary 保存批量任务-开启/关闭whois隐私保护锁
 *
 * @param request SaveBatchTaskForDomainNameProxyServiceRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForDomainNameProxyServiceResponse
 */
async function saveBatchTaskForDomainNameProxyServiceWithOptions(request: SaveBatchTaskForDomainNameProxyServiceRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForDomainNameProxyServiceResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForDomainNameProxyService',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存批量任务-开启/关闭whois隐私保护锁
 *
 * @param request SaveBatchTaskForDomainNameProxyServiceRequest
 * @return SaveBatchTaskForDomainNameProxyServiceResponse
 */
async function saveBatchTaskForDomainNameProxyService(request: SaveBatchTaskForDomainNameProxyServiceRequest): SaveBatchTaskForDomainNameProxyServiceResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForDomainNameProxyServiceWithOptions(request, runtime);
}

model SaveBatchTaskForGenerateDomainCertificateRequest {
  domainNames?: [ string ](name='DomainNames', description='The domain names.

This parameter is required.'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model SaveBatchTaskForGenerateDomainCertificateShrinkRequest {
  domainNamesShrink?: string(name='DomainNames', description='The domain names.

This parameter is required.'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model SaveBatchTaskForGenerateDomainCertificateResponseBody = {
  requestId?: string(name='RequestId', description='The request ID.', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', description='The task ID.', example='8b1cd755-4928-4b02-adee-e5d41d7b1939'),
}

model SaveBatchTaskForGenerateDomainCertificateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForGenerateDomainCertificateResponseBody(name='body'),
}

/**
 * @summary 提交批量生成证书的任务
 *
 * @param tmpReq SaveBatchTaskForGenerateDomainCertificateRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForGenerateDomainCertificateResponse
 */
async function saveBatchTaskForGenerateDomainCertificateWithOptions(tmpReq: SaveBatchTaskForGenerateDomainCertificateRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForGenerateDomainCertificateResponse {
  Util.validateModel(tmpReq);
  var request = new SaveBatchTaskForGenerateDomainCertificateShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!Util.isUnset(tmpReq.domainNames)) {
    request.domainNamesShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.domainNames, 'DomainNames', 'json');
  }
  var query = {};
  if (!Util.isUnset(request.domainNamesShrink)) {
    query['DomainNames'] = request.domainNamesShrink;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForGenerateDomainCertificate',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 提交批量生成证书的任务
 *
 * @param request SaveBatchTaskForGenerateDomainCertificateRequest
 * @return SaveBatchTaskForGenerateDomainCertificateResponse
 */
async function saveBatchTaskForGenerateDomainCertificate(request: SaveBatchTaskForGenerateDomainCertificateRequest): SaveBatchTaskForGenerateDomainCertificateResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForGenerateDomainCertificateWithOptions(request, runtime);
}

model SaveBatchTaskForModifyingDomainDnsRequest {
  aliyunDns?: boolean(name='AliyunDns', description='This parameter is required.', example='false'),
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='example.com'),
  domainNameServer?: [ string ](name='DomainNameServer', example='ns1.test.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForModifyingDomainDnsResponseBody = {
  requestId?: string(name='RequestId', example='6A862A8A-E7AB-4C4E-8946-A74122D9CC4B'),
  taskNo?: string(name='TaskNo', example='35fb2fb7-d4d6-4478-9408-22cb63696b86'),
}

model SaveBatchTaskForModifyingDomainDnsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForModifyingDomainDnsResponseBody(name='body'),
}

/**
 * @summary 批量修改dns
 *
 * @param request SaveBatchTaskForModifyingDomainDnsRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForModifyingDomainDnsResponse
 */
async function saveBatchTaskForModifyingDomainDnsWithOptions(request: SaveBatchTaskForModifyingDomainDnsRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForModifyingDomainDnsResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.aliyunDns)) {
    query['AliyunDns'] = request.aliyunDns;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.domainNameServer)) {
    query['DomainNameServer'] = request.domainNameServer;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForModifyingDomainDns',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 批量修改dns
 *
 * @param request SaveBatchTaskForModifyingDomainDnsRequest
 * @return SaveBatchTaskForModifyingDomainDnsResponse
 */
async function saveBatchTaskForModifyingDomainDns(request: SaveBatchTaskForModifyingDomainDnsRequest): SaveBatchTaskForModifyingDomainDnsResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForModifyingDomainDnsWithOptions(request, runtime);
}

model SaveBatchTaskForReserveDropListDomainRequest {
  contactTemplateId?: string(name='ContactTemplateId', description='This parameter is required.', example='123123'),
  domains?: [ 
    {
      dns1?: string(name='Dns1'),
      dns2?: string(name='Dns2'),
      domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
    }
  ](name='Domains', description='This parameter is required.'),
}

model SaveBatchTaskForReserveDropListDomainResponseBody = {
  requestId?: string(name='RequestId', example='B7AB5469-5E38-4AA9-A920-C65B7A9C8E6E'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveBatchTaskForReserveDropListDomainResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForReserveDropListDomainResponseBody(name='body'),
}

/**
 * @param request SaveBatchTaskForReserveDropListDomainRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForReserveDropListDomainResponse
 */
async function saveBatchTaskForReserveDropListDomainWithOptions(request: SaveBatchTaskForReserveDropListDomainRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForReserveDropListDomainResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.contactTemplateId)) {
    query['ContactTemplateId'] = request.contactTemplateId;
  }
  if (!Util.isUnset(request.domains)) {
    query['Domains'] = request.domains;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForReserveDropListDomain',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveBatchTaskForReserveDropListDomainRequest
 * @return SaveBatchTaskForReserveDropListDomainResponse
 */
async function saveBatchTaskForReserveDropListDomain(request: SaveBatchTaskForReserveDropListDomainRequest): SaveBatchTaskForReserveDropListDomainResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForReserveDropListDomainWithOptions(request, runtime);
}

model SaveBatchTaskForTransferOutByAuthorizationCodeRequest {
  long?: string(name='Long', example='en'),
  transferOutParamList?: [ 
    {
      authorizationCode?: string(name='AuthorizationCode', example='Test2o#Lck'),
      domainName?: string(name='DomainName', example='example.com'),
    }
  ](name='TransferOutParamList', description='This parameter is required.'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForTransferOutByAuthorizationCodeResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveBatchTaskForTransferOutByAuthorizationCodeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForTransferOutByAuthorizationCodeResponseBody(name='body'),
}

/**
 * @summary 基于转移码的批量转出任务提交
 *
 * @param request SaveBatchTaskForTransferOutByAuthorizationCodeRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForTransferOutByAuthorizationCodeResponse
 */
async function saveBatchTaskForTransferOutByAuthorizationCodeWithOptions(request: SaveBatchTaskForTransferOutByAuthorizationCodeRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForTransferOutByAuthorizationCodeResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.long)) {
    query['Long'] = request.long;
  }
  if (!Util.isUnset(request.transferOutParamList)) {
    query['TransferOutParamList'] = request.transferOutParamList;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForTransferOutByAuthorizationCode',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 基于转移码的批量转出任务提交
 *
 * @param request SaveBatchTaskForTransferOutByAuthorizationCodeRequest
 * @return SaveBatchTaskForTransferOutByAuthorizationCodeResponse
 */
async function saveBatchTaskForTransferOutByAuthorizationCode(request: SaveBatchTaskForTransferOutByAuthorizationCodeRequest): SaveBatchTaskForTransferOutByAuthorizationCodeResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForTransferOutByAuthorizationCodeWithOptions(request, runtime);
}

model SaveBatchTaskForTransferProhibitionLockRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='test1.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForTransferProhibitionLockResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForTransferProhibitionLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForTransferProhibitionLockResponseBody(name='body'),
}

/**
 * @summary 保存批量任务-开启/关闭禁止转移锁
 *
 * @param request SaveBatchTaskForTransferProhibitionLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForTransferProhibitionLockResponse
 */
async function saveBatchTaskForTransferProhibitionLockWithOptions(request: SaveBatchTaskForTransferProhibitionLockRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForTransferProhibitionLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForTransferProhibitionLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存批量任务-开启/关闭禁止转移锁
 *
 * @param request SaveBatchTaskForTransferProhibitionLockRequest
 * @return SaveBatchTaskForTransferProhibitionLockResponse
 */
async function saveBatchTaskForTransferProhibitionLock(request: SaveBatchTaskForTransferProhibitionLockRequest): SaveBatchTaskForTransferProhibitionLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForTransferProhibitionLockWithOptions(request, runtime);
}

model SaveBatchTaskForUpdateProhibitionLockRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='aliyundoc.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForUpdateProhibitionLockResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveBatchTaskForUpdateProhibitionLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForUpdateProhibitionLockResponseBody(name='body'),
}

/**
 * @param request SaveBatchTaskForUpdateProhibitionLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForUpdateProhibitionLockResponse
 */
async function saveBatchTaskForUpdateProhibitionLockWithOptions(request: SaveBatchTaskForUpdateProhibitionLockRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForUpdateProhibitionLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForUpdateProhibitionLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveBatchTaskForUpdateProhibitionLockRequest
 * @return SaveBatchTaskForUpdateProhibitionLockResponse
 */
async function saveBatchTaskForUpdateProhibitionLock(request: SaveBatchTaskForUpdateProhibitionLockRequest): SaveBatchTaskForUpdateProhibitionLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForUpdateProhibitionLockWithOptions(request, runtime);
}

model SaveBatchTaskForUpdatingContactInfoByNewContactRequest {
  address?: string(name='Address', example='chao yang qu'),
  city?: string(name='City', example='bei jing shi'),
  contactType?: string(name='ContactType', description='This parameter is required.', example='registrant'),
  country?: string(name='Country', example='CN'),
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='alibabacloud.com'),
  email?: string(name='Email', example='test@aliyun.com'),
  lang?: string(name='Lang', example='en'),
  postalCode?: string(name='PostalCode', example='123456'),
  province?: string(name='Province', example='bei jing'),
  registrantName?: string(name='RegistrantName', example='ce shi'),
  registrantOrganization?: string(name='RegistrantOrganization', example='ce shi'),
  registrantType?: string(name='RegistrantType', description='This parameter is required.', example='1'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='1235'),
  telephone?: string(name='Telephone', example='1234567890'),
  transferOutProhibited?: boolean(name='TransferOutProhibited', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model SaveBatchTaskForUpdatingContactInfoByNewContactResponseBody = {
  requestId?: string(name='RequestId', example='464AF466-CA8E-43A8-B61D-test'),
  taskNo?: string(name='TaskNo', example='65de2165-ca09-491f-9fe0-test'),
}

model SaveBatchTaskForUpdatingContactInfoByNewContactResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForUpdatingContactInfoByNewContactResponseBody(name='body'),
}

/**
 * @summary 使用联系人信息修改联系人的批量任务
 *
 * @param request SaveBatchTaskForUpdatingContactInfoByNewContactRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForUpdatingContactInfoByNewContactResponse
 */
async function saveBatchTaskForUpdatingContactInfoByNewContactWithOptions(request: SaveBatchTaskForUpdatingContactInfoByNewContactRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForUpdatingContactInfoByNewContactResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.contactType)) {
    query['ContactType'] = request.contactType;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.transferOutProhibited)) {
    query['TransferOutProhibited'] = request.transferOutProhibited;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForUpdatingContactInfoByNewContact',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 使用联系人信息修改联系人的批量任务
 *
 * @param request SaveBatchTaskForUpdatingContactInfoByNewContactRequest
 * @return SaveBatchTaskForUpdatingContactInfoByNewContactResponse
 */
async function saveBatchTaskForUpdatingContactInfoByNewContact(request: SaveBatchTaskForUpdatingContactInfoByNewContactRequest): SaveBatchTaskForUpdatingContactInfoByNewContactResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForUpdatingContactInfoByNewContactWithOptions(request, runtime);
}

model SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdRequest {
  contactType?: string(name='ContactType', description='This parameter is required.', example='registrant'),
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='1'),
  transferOutProhibited?: boolean(name='TransferOutProhibited', example='true'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponseBody = {
  requestId?: string(name='RequestId', example='EDC28FEC-6BE0-4583-95BC'),
  taskNo?: string(name='TaskNo', example='880f1579-be51-4dd3-a69d'),
}

model SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponseBody(name='body'),
}

/**
 * @summary 使用模板修改联系人的批量任务
 *
 * @param request SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponse
 */
async function saveBatchTaskForUpdatingContactInfoByRegistrantProfileIdWithOptions(request: SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdRequest, runtime: Util.RuntimeOptions): SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.contactType)) {
    query['ContactType'] = request.contactType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.transferOutProhibited)) {
    query['TransferOutProhibited'] = request.transferOutProhibited;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveBatchTaskForUpdatingContactInfoByRegistrantProfileId',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 使用模板修改联系人的批量任务
 *
 * @param request SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdRequest
 * @return SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponse
 */
async function saveBatchTaskForUpdatingContactInfoByRegistrantProfileId(request: SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdRequest): SaveBatchTaskForUpdatingContactInfoByRegistrantProfileIdResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveBatchTaskForUpdatingContactInfoByRegistrantProfileIdWithOptions(request, runtime);
}

model SaveDomainGroupRequest {
  domainGroupId?: long(name='DomainGroupId', example='123456'),
  domainGroupName?: string(name='DomainGroupName', description='This parameter is required.'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveDomainGroupResponseBody = {
  beingDeleted?: boolean(name='BeingDeleted', example='false'),
  creationDate?: string(name='CreationDate', example='2018-04-02 15:59:06'),
  domainGroupId?: long(name='DomainGroupId', example='123456'),
  domainGroupName?: string(name='DomainGroupName'),
  domainGroupStatus?: string(name='DomainGroupStatus', example='COMPLETE'),
  modificationDate?: string(name='ModificationDate', example='2018-04-02 15:59:06'),
  requestId?: string(name='RequestId', example='80011ABC-F573-4795-B0E8-377BFBBA3422'),
  totalNumber?: int32(name='TotalNumber', example='20'),
}

model SaveDomainGroupResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveDomainGroupResponseBody(name='body'),
}

/**
 * @summary 创建/更新域名分组
 *
 * @param request SaveDomainGroupRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveDomainGroupResponse
 */
async function saveDomainGroupWithOptions(request: SaveDomainGroupRequest, runtime: Util.RuntimeOptions): SaveDomainGroupResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.domainGroupName)) {
    query['DomainGroupName'] = request.domainGroupName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveDomainGroup',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 创建/更新域名分组
 *
 * @param request SaveDomainGroupRequest
 * @return SaveDomainGroupResponse
 */
async function saveDomainGroup(request: SaveDomainGroupRequest): SaveDomainGroupResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveDomainGroupWithOptions(request, runtime);
}

model SaveRegistrantProfileRequest {
  address?: string(name='Address', example='zhe jiang sheng hang zhou shi shi li qu shi li zhen shi li da sha 1001 hao'),
  city?: string(name='City', example='hang zhou shi'),
  country?: string(name='Country', example='CN'),
  defaultRegistrantProfile?: boolean(name='DefaultRegistrantProfile', example='false'),
  email?: string(name='Email', example='username@example.com'),
  lang?: string(name='Lang', example='en'),
  postalCode?: string(name='PostalCode', example='310024'),
  province?: string(name='Province', example='zhe jiang'),
  registrantName?: string(name='RegistrantName', example='li si'),
  registrantOrganization?: string(name='RegistrantOrganization', example='li si'),
  registrantProfileId?: long(name='RegistrantProfileId', example='3600000'),
  registrantProfileType?: string(name='RegistrantProfileType', example='common'),
  registrantType?: string(name='RegistrantType', example='1'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='1234'),
  telephone?: string(name='Telephone', example='1829756****'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model SaveRegistrantProfileResponseBody = {
  registrantProfileId?: long(name='RegistrantProfileId', example='3600000'),
  requestId?: string(name='RequestId', example='D09B153B-294D-42F1-BB61-F1C72136DFD3'),
}

model SaveRegistrantProfileResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveRegistrantProfileResponseBody(name='body'),
}

/**
 * @summary 保存联系人模板
 *
 * @param request SaveRegistrantProfileRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveRegistrantProfileResponse
 */
async function saveRegistrantProfileWithOptions(request: SaveRegistrantProfileRequest, runtime: Util.RuntimeOptions): SaveRegistrantProfileResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.defaultRegistrantProfile)) {
    query['DefaultRegistrantProfile'] = request.defaultRegistrantProfile;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.registrantProfileType)) {
    query['RegistrantProfileType'] = request.registrantProfileType;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveRegistrantProfile',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存联系人模板
 *
 * @param request SaveRegistrantProfileRequest
 * @return SaveRegistrantProfileResponse
 */
async function saveRegistrantProfile(request: SaveRegistrantProfileRequest): SaveRegistrantProfileResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveRegistrantProfileWithOptions(request, runtime);
}

model SaveRegistrantProfileRealNameVerificationRequest {
  address?: string(name='Address', example='chao yang qu'),
  city?: string(name='City', example='bei jing shi'),
  country?: string(name='Country', example='CN'),
  email?: string(name='Email', example='username@example.com'),
  identityCredential?: string(name='IdentityCredential', example='dGVzdA=='),
  identityCredentialNo?: string(name='IdentityCredentialNo', example='4111111111111110**'),
  identityCredentialType?: string(name='IdentityCredentialType', example='SFZ'),
  lang?: string(name='Lang', example='en'),
  postalCode?: string(name='PostalCode', example='1234567'),
  province?: string(name='Province', example='bei jing'),
  registrantName?: string(name='RegistrantName', example='ce shi'),
  registrantOrganization?: string(name='RegistrantOrganization', example='ce shi'),
  registrantProfileId?: long(name='RegistrantProfileId', example='1234567'),
  registrantProfileType?: string(name='RegistrantProfileType', example='common'),
  registrantType?: string(name='RegistrantType', example='1'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='1234'),
  telephone?: string(name='Telephone', example='12345678'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model SaveRegistrantProfileRealNameVerificationResponseBody = {
  registrantProfileId?: long(name='RegistrantProfileId', example='1234567'),
  requestId?: string(name='RequestId', example='4D73432C-7600-****-ACBB-C3B5CA145D32'),
}

model SaveRegistrantProfileRealNameVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveRegistrantProfileRealNameVerificationResponseBody(name='body'),
}

/**
 * @summary 保存联系人模板和凭据
 *
 * @param request SaveRegistrantProfileRealNameVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveRegistrantProfileRealNameVerificationResponse
 */
async function saveRegistrantProfileRealNameVerificationWithOptions(request: SaveRegistrantProfileRealNameVerificationRequest, runtime: Util.RuntimeOptions): SaveRegistrantProfileRealNameVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.identityCredential)) {
    query['IdentityCredential'] = request.identityCredential;
  }
  if (!Util.isUnset(request.identityCredentialNo)) {
    query['IdentityCredentialNo'] = request.identityCredentialNo;
  }
  if (!Util.isUnset(request.identityCredentialType)) {
    query['IdentityCredentialType'] = request.identityCredentialType;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.registrantProfileType)) {
    query['RegistrantProfileType'] = request.registrantProfileType;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveRegistrantProfileRealNameVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存联系人模板和凭据
 *
 * @param request SaveRegistrantProfileRealNameVerificationRequest
 * @return SaveRegistrantProfileRealNameVerificationResponse
 */
async function saveRegistrantProfileRealNameVerification(request: SaveRegistrantProfileRealNameVerificationRequest): SaveRegistrantProfileRealNameVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveRegistrantProfileRealNameVerificationWithOptions(request, runtime);
}

model SaveSingleTaskForAddingDSRecordRequest {
  algorithm?: int32(name='Algorithm', description='This parameter is required.', example='1'),
  digest?: string(name='Digest', description='This parameter is required.', example='f58fa917424383934c7b0cf1a90f61d692745680fa06f5ecdbe0924e86de9598'),
  digestType?: int32(name='DigestType', description='This parameter is required.', example='2'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  keyTag?: int32(name='KeyTag', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForAddingDSRecordResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForAddingDSRecordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForAddingDSRecordResponseBody(name='body'),
}

/**
 * @summary 添加dnsSec记录
 *
 * @param request SaveSingleTaskForAddingDSRecordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForAddingDSRecordResponse
 */
async function saveSingleTaskForAddingDSRecordWithOptions(request: SaveSingleTaskForAddingDSRecordRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForAddingDSRecordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.algorithm)) {
    query['Algorithm'] = request.algorithm;
  }
  if (!Util.isUnset(request.digest)) {
    query['Digest'] = request.digest;
  }
  if (!Util.isUnset(request.digestType)) {
    query['DigestType'] = request.digestType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.keyTag)) {
    query['KeyTag'] = request.keyTag;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForAddingDSRecord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 添加dnsSec记录
 *
 * @param request SaveSingleTaskForAddingDSRecordRequest
 * @return SaveSingleTaskForAddingDSRecordResponse
 */
async function saveSingleTaskForAddingDSRecord(request: SaveSingleTaskForAddingDSRecordRequest): SaveSingleTaskForAddingDSRecordResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForAddingDSRecordWithOptions(request, runtime);
}

model SaveSingleTaskForApplyQuickTransferOutOpenlyRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForApplyQuickTransferOutOpenlyResponseBody = {
  requestId?: string(name='RequestId', example='D200000-C0B9-4CD3-B92A-9B44A000000'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForApplyQuickTransferOutOpenlyResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForApplyQuickTransferOutOpenlyResponseBody(name='body'),
}

/**
 * @summary 申请域名快速转出
 *
 * @param request SaveSingleTaskForApplyQuickTransferOutOpenlyRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForApplyQuickTransferOutOpenlyResponse
 */
async function saveSingleTaskForApplyQuickTransferOutOpenlyWithOptions(request: SaveSingleTaskForApplyQuickTransferOutOpenlyRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForApplyQuickTransferOutOpenlyResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForApplyQuickTransferOutOpenly',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 申请域名快速转出
 *
 * @param request SaveSingleTaskForApplyQuickTransferOutOpenlyRequest
 * @return SaveSingleTaskForApplyQuickTransferOutOpenlyResponse
 */
async function saveSingleTaskForApplyQuickTransferOutOpenly(request: SaveSingleTaskForApplyQuickTransferOutOpenlyRequest): SaveSingleTaskForApplyQuickTransferOutOpenlyResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForApplyQuickTransferOutOpenlyWithOptions(request, runtime);
}

model SaveSingleTaskForApprovingTransferOutRequest {
  domainName?: string(name='DomainName', description='This parameter is required.'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForApprovingTransferOutResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForApprovingTransferOutResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForApprovingTransferOutResponseBody(name='body'),
}

/**
 * @summary 确认转出
 *
 * @param request SaveSingleTaskForApprovingTransferOutRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForApprovingTransferOutResponse
 */
async function saveSingleTaskForApprovingTransferOutWithOptions(request: SaveSingleTaskForApprovingTransferOutRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForApprovingTransferOutResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForApprovingTransferOut',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 确认转出
 *
 * @param request SaveSingleTaskForApprovingTransferOutRequest
 * @return SaveSingleTaskForApprovingTransferOutResponse
 */
async function saveSingleTaskForApprovingTransferOut(request: SaveSingleTaskForApprovingTransferOutRequest): SaveSingleTaskForApprovingTransferOutResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForApprovingTransferOutWithOptions(request, runtime);
}

model SaveSingleTaskForAssociatingEnsRequest {
  address?: string(name='Address', description='This parameter is required.', example='0x1234567890123456789012345678901234567890'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.luxe'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForAssociatingEnsResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForAssociatingEnsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForAssociatingEnsResponseBody(name='body'),
}

/**
 * @param request SaveSingleTaskForAssociatingEnsRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForAssociatingEnsResponse
 */
async function saveSingleTaskForAssociatingEnsWithOptions(request: SaveSingleTaskForAssociatingEnsRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForAssociatingEnsResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForAssociatingEns',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveSingleTaskForAssociatingEnsRequest
 * @return SaveSingleTaskForAssociatingEnsResponse
 */
async function saveSingleTaskForAssociatingEns(request: SaveSingleTaskForAssociatingEnsRequest): SaveSingleTaskForAssociatingEnsResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForAssociatingEnsWithOptions(request, runtime);
}

model SaveSingleTaskForCancelingTransferInRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCancelingTransferInResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCancelingTransferInResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCancelingTransferInResponseBody(name='body'),
}

/**
 * @param request SaveSingleTaskForCancelingTransferInRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCancelingTransferInResponse
 */
async function saveSingleTaskForCancelingTransferInWithOptions(request: SaveSingleTaskForCancelingTransferInRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCancelingTransferInResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCancelingTransferIn',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveSingleTaskForCancelingTransferInRequest
 * @return SaveSingleTaskForCancelingTransferInResponse
 */
async function saveSingleTaskForCancelingTransferIn(request: SaveSingleTaskForCancelingTransferInRequest): SaveSingleTaskForCancelingTransferInResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCancelingTransferInWithOptions(request, runtime);
}

model SaveSingleTaskForCancelingTransferOutRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCancelingTransferOutResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCancelingTransferOutResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCancelingTransferOutResponseBody(name='body'),
}

/**
 * @summary 取消转出
 *
 * @param request SaveSingleTaskForCancelingTransferOutRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCancelingTransferOutResponse
 */
async function saveSingleTaskForCancelingTransferOutWithOptions(request: SaveSingleTaskForCancelingTransferOutRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCancelingTransferOutResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCancelingTransferOut',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 取消转出
 *
 * @param request SaveSingleTaskForCancelingTransferOutRequest
 * @return SaveSingleTaskForCancelingTransferOutResponse
 */
async function saveSingleTaskForCancelingTransferOut(request: SaveSingleTaskForCancelingTransferOutRequest): SaveSingleTaskForCancelingTransferOutResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCancelingTransferOutWithOptions(request, runtime);
}

model SaveSingleTaskForCreatingDnsHostRequest {
  dnsName?: string(name='DnsName', description='This parameter is required.', example='dns1'),
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S1234567890'),
  ip?: [ string ](name='Ip', description='This parameter is required.', example='218.xx.xx.236'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCreatingDnsHostResponseBody = {
  requestId?: string(name='RequestId', example='0F1B3547-BE50-4206-8F78-9540FFB85BC1'),
  taskNo?: string(name='TaskNo', example='e9b8e8b4-7334-4548-9cec-c30b6891f292'),
}

model SaveSingleTaskForCreatingDnsHostResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCreatingDnsHostResponseBody(name='body'),
}

/**
 * @summary 保存创建dns服务器的任务请求
 *
 * @param request SaveSingleTaskForCreatingDnsHostRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCreatingDnsHostResponse
 */
async function saveSingleTaskForCreatingDnsHostWithOptions(request: SaveSingleTaskForCreatingDnsHostRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCreatingDnsHostResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.dnsName)) {
    query['DnsName'] = request.dnsName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.ip)) {
    query['Ip'] = request.ip;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCreatingDnsHost',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存创建dns服务器的任务请求
 *
 * @param request SaveSingleTaskForCreatingDnsHostRequest
 * @return SaveSingleTaskForCreatingDnsHostResponse
 */
async function saveSingleTaskForCreatingDnsHost(request: SaveSingleTaskForCreatingDnsHostRequest): SaveSingleTaskForCreatingDnsHostResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCreatingDnsHostWithOptions(request, runtime);
}

model SaveSingleTaskForCreatingOrderActivateRequest {
  address?: string(name='Address', example='chao yang qu'),
  aliyunDns?: boolean(name='AliyunDns', example='true'),
  city?: string(name='City', example='bei jing shi'),
  country?: string(name='Country', example='CN'),
  couponNo?: string(name='CouponNo', example='123456'),
  dns1?: string(name='Dns1', example='ns1.aliyun.com'),
  dns2?: string(name='Dns2', example='ns2.aliyun.com'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  email?: string(name='Email', example='username@example.com'),
  enableDomainProxy?: boolean(name='EnableDomainProxy', example='false'),
  lang?: string(name='Lang', example='en'),
  permitPremiumActivation?: boolean(name='PermitPremiumActivation', example='false'),
  postalCode?: string(name='PostalCode', example='1234567'),
  promotionNo?: string(name='PromotionNo', example='123123'),
  province?: string(name='Province', example='bei jing'),
  registrantName?: string(name='RegistrantName', example='ce shi'),
  registrantOrganization?: string(name='RegistrantOrganization', example='ce shi'),
  registrantProfileId?: long(name='RegistrantProfileId', example='123'),
  registrantType?: string(name='RegistrantType', example='1'),
  resourceGroupId?: string(name='ResourceGroupId', example='rg-XX'),
  subscriptionDuration?: int32(name='SubscriptionDuration', example='1'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='1234'),
  telephone?: string(name='Telephone', example='12345678'),
  trademarkDomainActivation?: boolean(name='TrademarkDomainActivation', example='false'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model SaveSingleTaskForCreatingOrderActivateResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCreatingOrderActivateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCreatingOrderActivateResponseBody(name='body'),
}

/**
 * @summary 保存单个任务-注册订单
 *
 * @param request SaveSingleTaskForCreatingOrderActivateRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCreatingOrderActivateResponse
 */
async function saveSingleTaskForCreatingOrderActivateWithOptions(request: SaveSingleTaskForCreatingOrderActivateRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCreatingOrderActivateResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.aliyunDns)) {
    query['AliyunDns'] = request.aliyunDns;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.dns1)) {
    query['Dns1'] = request.dns1;
  }
  if (!Util.isUnset(request.dns2)) {
    query['Dns2'] = request.dns2;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.enableDomainProxy)) {
    query['EnableDomainProxy'] = request.enableDomainProxy;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.permitPremiumActivation)) {
    query['PermitPremiumActivation'] = request.permitPremiumActivation;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.resourceGroupId)) {
    query['ResourceGroupId'] = request.resourceGroupId;
  }
  if (!Util.isUnset(request.subscriptionDuration)) {
    query['SubscriptionDuration'] = request.subscriptionDuration;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.trademarkDomainActivation)) {
    query['TrademarkDomainActivation'] = request.trademarkDomainActivation;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCreatingOrderActivate',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存单个任务-注册订单
 *
 * @param request SaveSingleTaskForCreatingOrderActivateRequest
 * @return SaveSingleTaskForCreatingOrderActivateResponse
 */
async function saveSingleTaskForCreatingOrderActivate(request: SaveSingleTaskForCreatingOrderActivateRequest): SaveSingleTaskForCreatingOrderActivateResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCreatingOrderActivateWithOptions(request, runtime);
}

model SaveSingleTaskForCreatingOrderRedeemRequest {
  couponNo?: string(name='CouponNo', example='123123'),
  currentExpirationDate?: long(name='CurrentExpirationDate', description='This parameter is required.', example='0000'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  promotionNo?: string(name='PromotionNo', example='123123'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCreatingOrderRedeemResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCreatingOrderRedeemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCreatingOrderRedeemResponseBody(name='body'),
}

/**
 * @param request SaveSingleTaskForCreatingOrderRedeemRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCreatingOrderRedeemResponse
 */
async function saveSingleTaskForCreatingOrderRedeemWithOptions(request: SaveSingleTaskForCreatingOrderRedeemRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCreatingOrderRedeemResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.currentExpirationDate)) {
    query['CurrentExpirationDate'] = request.currentExpirationDate;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCreatingOrderRedeem',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveSingleTaskForCreatingOrderRedeemRequest
 * @return SaveSingleTaskForCreatingOrderRedeemResponse
 */
async function saveSingleTaskForCreatingOrderRedeem(request: SaveSingleTaskForCreatingOrderRedeemRequest): SaveSingleTaskForCreatingOrderRedeemResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCreatingOrderRedeemWithOptions(request, runtime);
}

model SaveSingleTaskForCreatingOrderRenewRequest {
  couponNo?: string(name='CouponNo', example='123123'),
  currentExpirationDate?: long(name='CurrentExpirationDate', description='This parameter is required.', example='0000'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  promotionNo?: string(name='PromotionNo', example='123132'),
  subscriptionDuration?: int32(name='SubscriptionDuration', description='This parameter is required.', example='1'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCreatingOrderRenewResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCreatingOrderRenewResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCreatingOrderRenewResponseBody(name='body'),
}

/**
 * @summary 保存单个任务-续费订单
 *
 * @param request SaveSingleTaskForCreatingOrderRenewRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCreatingOrderRenewResponse
 */
async function saveSingleTaskForCreatingOrderRenewWithOptions(request: SaveSingleTaskForCreatingOrderRenewRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCreatingOrderRenewResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.currentExpirationDate)) {
    query['CurrentExpirationDate'] = request.currentExpirationDate;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.subscriptionDuration)) {
    query['SubscriptionDuration'] = request.subscriptionDuration;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCreatingOrderRenew',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存单个任务-续费订单
 *
 * @param request SaveSingleTaskForCreatingOrderRenewRequest
 * @return SaveSingleTaskForCreatingOrderRenewResponse
 */
async function saveSingleTaskForCreatingOrderRenew(request: SaveSingleTaskForCreatingOrderRenewRequest): SaveSingleTaskForCreatingOrderRenewResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCreatingOrderRenewWithOptions(request, runtime);
}

model SaveSingleTaskForCreatingOrderTransferRequest {
  authorizationCode?: string(name='AuthorizationCode', description='This parameter is required.', example='testCode'),
  couponNo?: string(name='CouponNo', example='123456'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  permitPremiumTransfer?: boolean(name='PermitPremiumTransfer', example='false'),
  promotionNo?: string(name='PromotionNo', example='123456'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='123456'),
  useCoupon?: boolean(name='UseCoupon', example='false'),
  usePromotion?: boolean(name='UsePromotion', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForCreatingOrderTransferResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForCreatingOrderTransferResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForCreatingOrderTransferResponseBody(name='body'),
}

/**
 * @param request SaveSingleTaskForCreatingOrderTransferRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForCreatingOrderTransferResponse
 */
async function saveSingleTaskForCreatingOrderTransferWithOptions(request: SaveSingleTaskForCreatingOrderTransferRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForCreatingOrderTransferResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.authorizationCode)) {
    query['AuthorizationCode'] = request.authorizationCode;
  }
  if (!Util.isUnset(request.couponNo)) {
    query['CouponNo'] = request.couponNo;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.permitPremiumTransfer)) {
    query['PermitPremiumTransfer'] = request.permitPremiumTransfer;
  }
  if (!Util.isUnset(request.promotionNo)) {
    query['PromotionNo'] = request.promotionNo;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.useCoupon)) {
    query['UseCoupon'] = request.useCoupon;
  }
  if (!Util.isUnset(request.usePromotion)) {
    query['UsePromotion'] = request.usePromotion;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForCreatingOrderTransfer',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveSingleTaskForCreatingOrderTransferRequest
 * @return SaveSingleTaskForCreatingOrderTransferResponse
 */
async function saveSingleTaskForCreatingOrderTransfer(request: SaveSingleTaskForCreatingOrderTransferRequest): SaveSingleTaskForCreatingOrderTransferResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForCreatingOrderTransferWithOptions(request, runtime);
}

model SaveSingleTaskForDeletingDSRecordRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  keyTag?: int32(name='KeyTag', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForDeletingDSRecordResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForDeletingDSRecordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForDeletingDSRecordResponseBody(name='body'),
}

/**
 * @summary 删除dnsSec记录
 *
 * @param request SaveSingleTaskForDeletingDSRecordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForDeletingDSRecordResponse
 */
async function saveSingleTaskForDeletingDSRecordWithOptions(request: SaveSingleTaskForDeletingDSRecordRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForDeletingDSRecordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.keyTag)) {
    query['KeyTag'] = request.keyTag;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForDeletingDSRecord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 删除dnsSec记录
 *
 * @param request SaveSingleTaskForDeletingDSRecordRequest
 * @return SaveSingleTaskForDeletingDSRecordResponse
 */
async function saveSingleTaskForDeletingDSRecord(request: SaveSingleTaskForDeletingDSRecordRequest): SaveSingleTaskForDeletingDSRecordResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForDeletingDSRecordWithOptions(request, runtime);
}

model SaveSingleTaskForDeletingDnsHostRequest {
  dnsName?: string(name='DnsName', description='This parameter is required.', example='dns1'),
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S2019270W570xxxx'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForDeletingDnsHostResponseBody = {
  requestId?: string(name='RequestId', example='8fc97e44-837a-447d-ac61-ea28d2fe8a38'),
  taskNo?: string(name='TaskNo', example='8fc97e44-837a-447d-ac61-ea28d2fexxxx'),
}

model SaveSingleTaskForDeletingDnsHostResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForDeletingDnsHostResponseBody(name='body'),
}

/**
 * @summary 删除DNS HOST任务
 *
 * @param request SaveSingleTaskForDeletingDnsHostRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForDeletingDnsHostResponse
 */
async function saveSingleTaskForDeletingDnsHostWithOptions(request: SaveSingleTaskForDeletingDnsHostRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForDeletingDnsHostResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.dnsName)) {
    query['DnsName'] = request.dnsName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForDeletingDnsHost',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 删除DNS HOST任务
 *
 * @param request SaveSingleTaskForDeletingDnsHostRequest
 * @return SaveSingleTaskForDeletingDnsHostResponse
 */
async function saveSingleTaskForDeletingDnsHost(request: SaveSingleTaskForDeletingDnsHostRequest): SaveSingleTaskForDeletingDnsHostResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForDeletingDnsHostWithOptions(request, runtime);
}

model SaveSingleTaskForDisassociatingEnsRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.luxe'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForDisassociatingEnsResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForDisassociatingEnsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForDisassociatingEnsResponseBody(name='body'),
}

/**
 * @param request SaveSingleTaskForDisassociatingEnsRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForDisassociatingEnsResponse
 */
async function saveSingleTaskForDisassociatingEnsWithOptions(request: SaveSingleTaskForDisassociatingEnsRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForDisassociatingEnsResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForDisassociatingEns',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request SaveSingleTaskForDisassociatingEnsRequest
 * @return SaveSingleTaskForDisassociatingEnsResponse
 */
async function saveSingleTaskForDisassociatingEns(request: SaveSingleTaskForDisassociatingEnsRequest): SaveSingleTaskForDisassociatingEnsResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForDisassociatingEnsWithOptions(request, runtime);
}

model SaveSingleTaskForDomainNameProxyServiceRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForDomainNameProxyServiceResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForDomainNameProxyServiceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForDomainNameProxyServiceResponseBody(name='body'),
}

/**
 * @summary 保存单个任务-开启/关闭whois隐私保护锁
 *
 * @param request SaveSingleTaskForDomainNameProxyServiceRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForDomainNameProxyServiceResponse
 */
async function saveSingleTaskForDomainNameProxyServiceWithOptions(request: SaveSingleTaskForDomainNameProxyServiceRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForDomainNameProxyServiceResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForDomainNameProxyService',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存单个任务-开启/关闭whois隐私保护锁
 *
 * @param request SaveSingleTaskForDomainNameProxyServiceRequest
 * @return SaveSingleTaskForDomainNameProxyServiceResponse
 */
async function saveSingleTaskForDomainNameProxyService(request: SaveSingleTaskForDomainNameProxyServiceRequest): SaveSingleTaskForDomainNameProxyServiceResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForDomainNameProxyServiceWithOptions(request, runtime);
}

model SaveSingleTaskForGenerateDomainCertificateRequest {
  domainName?: string(name='DomainName', description='The domain name.

This parameter is required.', example='test.com'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model SaveSingleTaskForGenerateDomainCertificateResponseBody = {
  requestId?: string(name='RequestId', description='The request ID.', example='3E68AB12-3D1F-5B9A-A358-F6B7852AD0B6'),
  taskNo?: string(name='TaskNo', description='The task ID.', example='2741a831-d9ea-4dfb-af94-61948c0478c3'),
}

model SaveSingleTaskForGenerateDomainCertificateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForGenerateDomainCertificateResponseBody(name='body'),
}

/**
 * @summary 提交生成域名证书任务
 *
 * @param request SaveSingleTaskForGenerateDomainCertificateRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForGenerateDomainCertificateResponse
 */
async function saveSingleTaskForGenerateDomainCertificateWithOptions(request: SaveSingleTaskForGenerateDomainCertificateRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForGenerateDomainCertificateResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForGenerateDomainCertificate',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 提交生成域名证书任务
 *
 * @param request SaveSingleTaskForGenerateDomainCertificateRequest
 * @return SaveSingleTaskForGenerateDomainCertificateResponse
 */
async function saveSingleTaskForGenerateDomainCertificate(request: SaveSingleTaskForGenerateDomainCertificateRequest): SaveSingleTaskForGenerateDomainCertificateResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForGenerateDomainCertificateWithOptions(request, runtime);
}

model SaveSingleTaskForModifyingDSRecordRequest {
  algorithm?: int32(name='Algorithm', description='This parameter is required.', example='1'),
  digest?: string(name='Digest', description='This parameter is required.', example='f58fa917424383934c7b0cf1a90f61d692745680fa06f5ecdbe0924e86de9598'),
  digestType?: int32(name='DigestType', description='This parameter is required.', example='2'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  keyTag?: int32(name='KeyTag', description='This parameter is required.', example='1'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForModifyingDSRecordResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForModifyingDSRecordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForModifyingDSRecordResponseBody(name='body'),
}

/**
 * @summary 修改DnsSec记录
 *
 * @param request SaveSingleTaskForModifyingDSRecordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForModifyingDSRecordResponse
 */
async function saveSingleTaskForModifyingDSRecordWithOptions(request: SaveSingleTaskForModifyingDSRecordRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForModifyingDSRecordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.algorithm)) {
    query['Algorithm'] = request.algorithm;
  }
  if (!Util.isUnset(request.digest)) {
    query['Digest'] = request.digest;
  }
  if (!Util.isUnset(request.digestType)) {
    query['DigestType'] = request.digestType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.keyTag)) {
    query['KeyTag'] = request.keyTag;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForModifyingDSRecord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 修改DnsSec记录
 *
 * @param request SaveSingleTaskForModifyingDSRecordRequest
 * @return SaveSingleTaskForModifyingDSRecordResponse
 */
async function saveSingleTaskForModifyingDSRecord(request: SaveSingleTaskForModifyingDSRecordRequest): SaveSingleTaskForModifyingDSRecordResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForModifyingDSRecordWithOptions(request, runtime);
}

model SaveSingleTaskForModifyingDnsHostRequest {
  dnsName?: string(name='DnsName', description='This parameter is required.', example='dns1'),
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S123456789'),
  ip?: [ string ](name='Ip', description='This parameter is required.', example='218.xx.xx.236'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForModifyingDnsHostResponseBody = {
  requestId?: string(name='RequestId', example='0F1B3547-BE50-4206-8F78-9540FFB85BC1'),
  taskNo?: string(name='TaskNo', example='e9b8e8b4-7334-4548-9cec-c30b6891f292'),
}

model SaveSingleTaskForModifyingDnsHostResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForModifyingDnsHostResponseBody(name='body'),
}

/**
 * @summary 保存修改dns服务器的任务请求
 *
 * @param request SaveSingleTaskForModifyingDnsHostRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForModifyingDnsHostResponse
 */
async function saveSingleTaskForModifyingDnsHostWithOptions(request: SaveSingleTaskForModifyingDnsHostRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForModifyingDnsHostResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.dnsName)) {
    query['DnsName'] = request.dnsName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.ip)) {
    query['Ip'] = request.ip;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForModifyingDnsHost',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存修改dns服务器的任务请求
 *
 * @param request SaveSingleTaskForModifyingDnsHostRequest
 * @return SaveSingleTaskForModifyingDnsHostResponse
 */
async function saveSingleTaskForModifyingDnsHost(request: SaveSingleTaskForModifyingDnsHostRequest): SaveSingleTaskForModifyingDnsHostResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForModifyingDnsHostWithOptions(request, runtime);
}

model SaveSingleTaskForQueryingTransferAuthorizationCodeRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForQueryingTransferAuthorizationCodeResponseBody = {
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForQueryingTransferAuthorizationCodeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForQueryingTransferAuthorizationCodeResponseBody(name='body'),
}

/**
 * @summary 发送转移码
 *
 * @param request SaveSingleTaskForQueryingTransferAuthorizationCodeRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForQueryingTransferAuthorizationCodeResponse
 */
async function saveSingleTaskForQueryingTransferAuthorizationCodeWithOptions(request: SaveSingleTaskForQueryingTransferAuthorizationCodeRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForQueryingTransferAuthorizationCodeResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForQueryingTransferAuthorizationCode',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 发送转移码
 *
 * @param request SaveSingleTaskForQueryingTransferAuthorizationCodeRequest
 * @return SaveSingleTaskForQueryingTransferAuthorizationCodeResponse
 */
async function saveSingleTaskForQueryingTransferAuthorizationCode(request: SaveSingleTaskForQueryingTransferAuthorizationCodeRequest): SaveSingleTaskForQueryingTransferAuthorizationCodeResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForQueryingTransferAuthorizationCodeWithOptions(request, runtime);
}

model SaveSingleTaskForReserveDropListDomainRequest {
  contactTemplateId?: string(name='ContactTemplateId', description='This parameter is required.'),
  dns1?: string(name='Dns1'),
  dns2?: string(name='Dns2'),
  domainName?: string(name='DomainName', description='This parameter is required.'),
}

model SaveSingleTaskForReserveDropListDomainResponseBody = {
  requestId?: string(name='RequestId'),
  taskNo?: string(name='TaskNo'),
}

model SaveSingleTaskForReserveDropListDomainResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForReserveDropListDomainResponseBody(name='body'),
}

/**
 * @summary 单笔抢注批量接口
 *
 * @param request SaveSingleTaskForReserveDropListDomainRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForReserveDropListDomainResponse
 */
async function saveSingleTaskForReserveDropListDomainWithOptions(request: SaveSingleTaskForReserveDropListDomainRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForReserveDropListDomainResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.contactTemplateId)) {
    query['ContactTemplateId'] = request.contactTemplateId;
  }
  if (!Util.isUnset(request.dns1)) {
    query['Dns1'] = request.dns1;
  }
  if (!Util.isUnset(request.dns2)) {
    query['Dns2'] = request.dns2;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForReserveDropListDomain',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 单笔抢注批量接口
 *
 * @param request SaveSingleTaskForReserveDropListDomainRequest
 * @return SaveSingleTaskForReserveDropListDomainResponse
 */
async function saveSingleTaskForReserveDropListDomain(request: SaveSingleTaskForReserveDropListDomainRequest): SaveSingleTaskForReserveDropListDomainResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForReserveDropListDomainWithOptions(request, runtime);
}

model SaveSingleTaskForSaveArtExtensionRequest {
  dateOrPeriod?: string(name='DateOrPeriod', example='2019-10-01'),
  dimensions?: string(name='Dimensions', example='20 cm'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='test.art'),
  features?: string(name='Features', example='iconicity'),
  inscriptionsAndMarkings?: string(name='InscriptionsAndMarkings', example='realism'),
  lang?: string(name='Lang', example='en'),
  maker?: string(name='Maker', example='zhang san'),
  materialsAndTechniques?: string(name='MaterialsAndTechniques', example='silk'),
  objectType?: string(name='ObjectType', example='The embroidery'),
  reference?: string(name='Reference', example='drawings'),
  subject?: string(name='Subject', example='peace'),
  title?: string(name='Title', example='Peace and friendship'),
}

model SaveSingleTaskForSaveArtExtensionResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AB'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e141'),
}

model SaveSingleTaskForSaveArtExtensionResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForSaveArtExtensionResponseBody(name='body'),
}

/**
 * @summary 保存art扩展信息任务
 *
 * @param request SaveSingleTaskForSaveArtExtensionRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForSaveArtExtensionResponse
 */
async function saveSingleTaskForSaveArtExtensionWithOptions(request: SaveSingleTaskForSaveArtExtensionRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForSaveArtExtensionResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.dateOrPeriod)) {
    query['DateOrPeriod'] = request.dateOrPeriod;
  }
  if (!Util.isUnset(request.dimensions)) {
    query['Dimensions'] = request.dimensions;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.features)) {
    query['Features'] = request.features;
  }
  if (!Util.isUnset(request.inscriptionsAndMarkings)) {
    query['InscriptionsAndMarkings'] = request.inscriptionsAndMarkings;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.maker)) {
    query['Maker'] = request.maker;
  }
  if (!Util.isUnset(request.materialsAndTechniques)) {
    query['MaterialsAndTechniques'] = request.materialsAndTechniques;
  }
  if (!Util.isUnset(request.objectType)) {
    query['ObjectType'] = request.objectType;
  }
  if (!Util.isUnset(request.reference)) {
    query['Reference'] = request.reference;
  }
  if (!Util.isUnset(request.subject)) {
    query['Subject'] = request.subject;
  }
  if (!Util.isUnset(request.title)) {
    query['Title'] = request.title;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForSaveArtExtension',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存art扩展信息任务
 *
 * @param request SaveSingleTaskForSaveArtExtensionRequest
 * @return SaveSingleTaskForSaveArtExtensionResponse
 */
async function saveSingleTaskForSaveArtExtension(request: SaveSingleTaskForSaveArtExtensionRequest): SaveSingleTaskForSaveArtExtensionResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForSaveArtExtensionWithOptions(request, runtime);
}

model SaveSingleTaskForSynchronizingDSRecordRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForSynchronizingDSRecordResponseBody = {
  requestId?: string(name='RequestId', example='E2598CAF-DBFE-494E-95EF-B42A33C178AA'),
  taskNo?: string(name='TaskNo', example='e893148f-6343-4ae1-9eba-6e2a4116e142'),
}

model SaveSingleTaskForSynchronizingDSRecordResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForSynchronizingDSRecordResponseBody(name='body'),
}

/**
 * @summary 同步DnsSec记录
 *
 * @param request SaveSingleTaskForSynchronizingDSRecordRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForSynchronizingDSRecordResponse
 */
async function saveSingleTaskForSynchronizingDSRecordWithOptions(request: SaveSingleTaskForSynchronizingDSRecordRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForSynchronizingDSRecordResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForSynchronizingDSRecord',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 同步DnsSec记录
 *
 * @param request SaveSingleTaskForSynchronizingDSRecordRequest
 * @return SaveSingleTaskForSynchronizingDSRecordResponse
 */
async function saveSingleTaskForSynchronizingDSRecord(request: SaveSingleTaskForSynchronizingDSRecordRequest): SaveSingleTaskForSynchronizingDSRecordResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForSynchronizingDSRecordWithOptions(request, runtime);
}

model SaveSingleTaskForSynchronizingDnsHostRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='ST2017120814571100001303'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForSynchronizingDnsHostResponseBody = {
  requestId?: string(name='RequestId', example='0F1B3547-BE50-4206-8F78-9540FFB85BC1'),
  taskNo?: string(name='TaskNo', example='e9b8e8b4-7334-4548-9cec-c30b6891f292'),
}

model SaveSingleTaskForSynchronizingDnsHostResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForSynchronizingDnsHostResponseBody(name='body'),
}

/**
 * @summary 保存同步dns服务器的任务请求
 *
 * @param request SaveSingleTaskForSynchronizingDnsHostRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForSynchronizingDnsHostResponse
 */
async function saveSingleTaskForSynchronizingDnsHostWithOptions(request: SaveSingleTaskForSynchronizingDnsHostRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForSynchronizingDnsHostResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForSynchronizingDnsHost',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存同步dns服务器的任务请求
 *
 * @param request SaveSingleTaskForSynchronizingDnsHostRequest
 * @return SaveSingleTaskForSynchronizingDnsHostResponse
 */
async function saveSingleTaskForSynchronizingDnsHost(request: SaveSingleTaskForSynchronizingDnsHostRequest): SaveSingleTaskForSynchronizingDnsHostResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForSynchronizingDnsHostWithOptions(request, runtime);
}

model SaveSingleTaskForTransferOutByAuthorizationCodeRequest {
  authorizationCode?: string(name='AuthorizationCode', description='This parameter is required.', example='Test2o#Lck'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForTransferOutByAuthorizationCodeResponseBody = {
  requestId?: string(name='RequestId', example='C560A803-B975-481D-A66B-A4395EA863A1'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForTransferOutByAuthorizationCodeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForTransferOutByAuthorizationCodeResponseBody(name='body'),
}

/**
 * @summary 基于转移码的单个转出任务提交
 *
 * @param request SaveSingleTaskForTransferOutByAuthorizationCodeRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForTransferOutByAuthorizationCodeResponse
 */
async function saveSingleTaskForTransferOutByAuthorizationCodeWithOptions(request: SaveSingleTaskForTransferOutByAuthorizationCodeRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForTransferOutByAuthorizationCodeResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.authorizationCode)) {
    query['AuthorizationCode'] = request.authorizationCode;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForTransferOutByAuthorizationCode',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 基于转移码的单个转出任务提交
 *
 * @param request SaveSingleTaskForTransferOutByAuthorizationCodeRequest
 * @return SaveSingleTaskForTransferOutByAuthorizationCodeResponse
 */
async function saveSingleTaskForTransferOutByAuthorizationCode(request: SaveSingleTaskForTransferOutByAuthorizationCodeRequest): SaveSingleTaskForTransferOutByAuthorizationCodeResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForTransferOutByAuthorizationCodeWithOptions(request, runtime);
}

model SaveSingleTaskForTransferProhibitionLockRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForTransferProhibitionLockResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveSingleTaskForTransferProhibitionLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForTransferProhibitionLockResponseBody(name='body'),
}

/**
 * @summary 保存单个任务-开启/关闭禁止转移锁
 *
 * @param request SaveSingleTaskForTransferProhibitionLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForTransferProhibitionLockResponse
 */
async function saveSingleTaskForTransferProhibitionLockWithOptions(request: SaveSingleTaskForTransferProhibitionLockRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForTransferProhibitionLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForTransferProhibitionLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存单个任务-开启/关闭禁止转移锁
 *
 * @param request SaveSingleTaskForTransferProhibitionLockRequest
 * @return SaveSingleTaskForTransferProhibitionLockResponse
 */
async function saveSingleTaskForTransferProhibitionLock(request: SaveSingleTaskForTransferProhibitionLockRequest): SaveSingleTaskForTransferProhibitionLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForTransferProhibitionLockWithOptions(request, runtime);
}

model SaveSingleTaskForUpdateProhibitionLockRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  status?: boolean(name='Status', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForUpdateProhibitionLockResponseBody = {
  requestId?: string(name='RequestId', example='F51977F9-2B40-462B-BCCD-CF5BB1E9DB56'),
  taskNo?: string(name='TaskNo', example='d3babb0a-c939-4c25-8c65-c47b65f5492a'),
}

model SaveSingleTaskForUpdateProhibitionLockResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForUpdateProhibitionLockResponseBody(name='body'),
}

/**
 * @summary 保存单个任务-开启/关闭信息安全锁
 *
 * @param request SaveSingleTaskForUpdateProhibitionLockRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForUpdateProhibitionLockResponse
 */
async function saveSingleTaskForUpdateProhibitionLockWithOptions(request: SaveSingleTaskForUpdateProhibitionLockRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForUpdateProhibitionLockResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.status)) {
    query['Status'] = request.status;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForUpdateProhibitionLock',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存单个任务-开启/关闭信息安全锁
 *
 * @param request SaveSingleTaskForUpdateProhibitionLockRequest
 * @return SaveSingleTaskForUpdateProhibitionLockResponse
 */
async function saveSingleTaskForUpdateProhibitionLock(request: SaveSingleTaskForUpdateProhibitionLockRequest): SaveSingleTaskForUpdateProhibitionLockResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForUpdateProhibitionLockWithOptions(request, runtime);
}

model SaveSingleTaskForUpdatingContactInfoRequest {
  addTransferLock?: boolean(name='AddTransferLock', example='false'),
  contactType?: string(name='ContactType', description='This parameter is required.', example='registrant'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  instanceId?: string(name='InstanceId', example='S123456789'),
  lang?: string(name='Lang', example='en'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='1'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveSingleTaskForUpdatingContactInfoResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveSingleTaskForUpdatingContactInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveSingleTaskForUpdatingContactInfoResponseBody(name='body'),
}

/**
 * @summary 保存修改联系人的任务
 *
 * @param request SaveSingleTaskForUpdatingContactInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveSingleTaskForUpdatingContactInfoResponse
 */
async function saveSingleTaskForUpdatingContactInfoWithOptions(request: SaveSingleTaskForUpdatingContactInfoRequest, runtime: Util.RuntimeOptions): SaveSingleTaskForUpdatingContactInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.addTransferLock)) {
    query['AddTransferLock'] = request.addTransferLock;
  }
  if (!Util.isUnset(request.contactType)) {
    query['ContactType'] = request.contactType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveSingleTaskForUpdatingContactInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存修改联系人的任务
 *
 * @param request SaveSingleTaskForUpdatingContactInfoRequest
 * @return SaveSingleTaskForUpdatingContactInfoResponse
 */
async function saveSingleTaskForUpdatingContactInfo(request: SaveSingleTaskForUpdatingContactInfoRequest): SaveSingleTaskForUpdatingContactInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveSingleTaskForUpdatingContactInfoWithOptions(request, runtime);
}

model SaveTaskForSubmittingDomainDeleteRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S20181*****85212'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveTaskForSubmittingDomainDeleteResponseBody = {
  requestId?: string(name='RequestId', example='23C9B3C4-9E2C-4405-A88D-BD33E459D140'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveTaskForSubmittingDomainDeleteResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveTaskForSubmittingDomainDeleteResponseBody(name='body'),
}

/**
 * @summary 保存删除域名的任务
 *
 * @param request SaveTaskForSubmittingDomainDeleteRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveTaskForSubmittingDomainDeleteResponse
 */
async function saveTaskForSubmittingDomainDeleteWithOptions(request: SaveTaskForSubmittingDomainDeleteRequest, runtime: Util.RuntimeOptions): SaveTaskForSubmittingDomainDeleteResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveTaskForSubmittingDomainDelete',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 保存删除域名的任务
 *
 * @param request SaveTaskForSubmittingDomainDeleteRequest
 * @return SaveTaskForSubmittingDomainDeleteResponse
 */
async function saveTaskForSubmittingDomainDelete(request: SaveTaskForSubmittingDomainDeleteRequest): SaveTaskForSubmittingDomainDeleteResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveTaskForSubmittingDomainDeleteWithOptions(request, runtime);
}

model SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.'),
  identityCredential?: string(name='IdentityCredential', description='This parameter is required.'),
  identityCredentialNo?: string(name='IdentityCredentialNo', description='This parameter is required.'),
  identityCredentialType?: string(name='IdentityCredentialType', description='This parameter is required.'),
  lang?: string(name='Lang'),
  userClientIp?: string(name='UserClientIp'),
}

model SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponseBody = {
  requestId?: string(name='RequestId'),
  taskNo?: string(name='TaskNo'),
}

model SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponseBody(name='body'),
}

/**
 * @summary 批量提交域名资料
 *
 * @param request SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponse
 */
async function saveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialWithOptions(request: SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialRequest, runtime: Util.RuntimeOptions): SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.identityCredentialNo)) {
    query['IdentityCredentialNo'] = request.identityCredentialNo;
  }
  if (!Util.isUnset(request.identityCredentialType)) {
    query['IdentityCredentialType'] = request.identityCredentialType;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.identityCredential)) {
    body['IdentityCredential'] = request.identityCredential;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredential',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 批量提交域名资料
 *
 * @param request SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialRequest
 * @return SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponse
 */
async function saveTaskForSubmittingDomainRealNameVerificationByIdentityCredential(request: SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialRequest): SaveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveTaskForSubmittingDomainRealNameVerificationByIdentityCredentialWithOptions(request, runtime);
}

model SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDRequest {
  domainName?: string(name='DomainName', description='This parameter is required.'),
  instanceId?: string(name='InstanceId', description='This parameter is required.'),
  lang?: string(name='Lang'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.'),
  userClientIp?: string(name='UserClientIp'),
}

model SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponseBody = {
  requestId?: string(name='RequestId'),
  taskNo?: string(name='TaskNo'),
}

model SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponseBody(name='body'),
}

/**
 * @summary 根据模板保存域名的实名认证信息
 *
 * @param request SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponse
 */
async function saveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDWithOptions(request: SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDRequest, runtime: Util.RuntimeOptions): SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileID',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 根据模板保存域名的实名认证信息
 *
 * @param request SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDRequest
 * @return SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponse
 */
async function saveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileID(request: SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDRequest): SaveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveTaskForSubmittingDomainRealNameVerificationByRegistrantProfileIDWithOptions(request, runtime);
}

model SaveTaskForUpdatingRegistrantInfoByIdentityCredentialRequest {
  address?: string(name='Address', example='chao yang qu'),
  city?: string(name='City', example='bei jing shi'),
  country?: string(name='Country', example='CN'),
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='alibabacloud.com'),
  email?: string(name='Email', example='test@aliyun.com'),
  identityCredential?: string(name='IdentityCredential', description='This parameter is required.', example='h6UPhXz/ADP/2Q=='),
  identityCredentialNo?: string(name='IdentityCredentialNo', description='This parameter is required.', example='5****************9'),
  identityCredentialType?: string(name='IdentityCredentialType', description='This parameter is required.', example='SFZ'),
  lang?: string(name='Lang', example='en'),
  postalCode?: string(name='PostalCode', example='123456'),
  province?: string(name='Province', example='bei jing'),
  registrantName?: string(name='RegistrantName', example='ce shi'),
  registrantOrganization?: string(name='RegistrantOrganization', example='ce shi'),
  registrantType?: string(name='RegistrantType', description='This parameter is required.', example='1'),
  telArea?: string(name='TelArea', description='This parameter is required.', example='86'),
  telExt?: string(name='TelExt', example='12345'),
  telephone?: string(name='Telephone', description='This parameter is required.', example='12345678'),
  transferOutProhibited?: boolean(name='TransferOutProhibited', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponseBody = {
  requestId?: string(name='RequestId', example='EDC28FEC-6BE0-4583-95BC-test'),
  taskNo?: string(name='TaskNo', example='880f1579-be51-4dd3-a69d-test'),
}

model SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponseBody(name='body'),
}

/**
 * @summary 根据联系人信息批量修改注册联系人信息
 *
 * @param request SaveTaskForUpdatingRegistrantInfoByIdentityCredentialRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponse
 */
async function saveTaskForUpdatingRegistrantInfoByIdentityCredentialWithOptions(request: SaveTaskForUpdatingRegistrantInfoByIdentityCredentialRequest, runtime: Util.RuntimeOptions): SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.identityCredentialNo)) {
    query['IdentityCredentialNo'] = request.identityCredentialNo;
  }
  if (!Util.isUnset(request.identityCredentialType)) {
    query['IdentityCredentialType'] = request.identityCredentialType;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.transferOutProhibited)) {
    query['TransferOutProhibited'] = request.transferOutProhibited;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.identityCredential)) {
    body['IdentityCredential'] = request.identityCredential;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'SaveTaskForUpdatingRegistrantInfoByIdentityCredential',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 根据联系人信息批量修改注册联系人信息
 *
 * @param request SaveTaskForUpdatingRegistrantInfoByIdentityCredentialRequest
 * @return SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponse
 */
async function saveTaskForUpdatingRegistrantInfoByIdentityCredential(request: SaveTaskForUpdatingRegistrantInfoByIdentityCredentialRequest): SaveTaskForUpdatingRegistrantInfoByIdentityCredentialResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveTaskForUpdatingRegistrantInfoByIdentityCredentialWithOptions(request, runtime);
}

model SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDRequest {
  domainName?: [ string ](name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='1'),
  transferOutProhibited?: boolean(name='TransferOutProhibited', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
  taskNo?: string(name='TaskNo', example='3cb1adc3-20e8-44ae-9e76-e812fa6fc9d8'),
}

model SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponseBody(name='body'),
}

/**
 * @summary 根据模板批量修改注册联系人
 *
 * @param request SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponse
 */
async function saveTaskForUpdatingRegistrantInfoByRegistrantProfileIDWithOptions(request: SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDRequest, runtime: Util.RuntimeOptions): SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.transferOutProhibited)) {
    query['TransferOutProhibited'] = request.transferOutProhibited;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SaveTaskForUpdatingRegistrantInfoByRegistrantProfileID',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 根据模板批量修改注册联系人
 *
 * @param request SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDRequest
 * @return SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponse
 */
async function saveTaskForUpdatingRegistrantInfoByRegistrantProfileID(request: SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDRequest): SaveTaskForUpdatingRegistrantInfoByRegistrantProfileIDResponse {
  var runtime = new Util.RuntimeOptions{};
  return saveTaskForUpdatingRegistrantInfoByRegistrantProfileIDWithOptions(request, runtime);
}

model ScrollDomainListRequest {
  domainGroupId?: long(name='DomainGroupId', description='The ID of the domain name group. You can call the [QueryDomainGroupList](https://help.aliyun.com/document_detail/69362.html) operation to obtain the ID of the domain name group.', example='123456'),
  domainStatus?: int32(name='DomainStatus', description='The status of the domain name. Valid values:

*   **0**: All.
*   **1**: The domain name needs to be renewed.
*   **2**: The domain name needs to be redeemed.
*   **3**: The domain name is normal.
*   **4**: The domain name is being transferred from Alibaba Cloud.
*   **5**: The information about the domain name registrant is being modified.
*   **6**: Real-name verification is not performed on the domain name.
*   **7**: Real-name verification for the domain name fails. Real-name reverification is required.
*   **8**: The domain name is being reviewed.', example='0'),
  endExpirationDate?: long(name='EndExpirationDate', description='The end of the time range to query domain names based on expiration dates. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1541520000000'),
  endLength?: int32(name='EndLength', description='The end of domain name length to query.', example='3'),
  endRegistrationDate?: long(name='EndRegistrationDate', description='The end of the time range to query domain names based on registration dates. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1541520000000'),
  excluded?: string(name='Excluded', description='The keyword that is used to exclude domain names.', example='test'),
  excludedPrefix?: boolean(name='ExcludedPrefix', description='Specifies whether to exclude the prefix keyword.', example='false'),
  excludedSuffix?: boolean(name='ExcludedSuffix', description='Specifies whether to exclude the suffix keyword.', example='true'),
  form?: int32(name='Form', description='The composition of the domain name.', example='1'),
  keyWord?: string(name='KeyWord', description='The keyword.', example='test'),
  keyWordPrefix?: boolean(name='KeyWordPrefix', description='Specifies whether the keyword is the prefix.', example='true'),
  keyWordSuffix?: boolean(name='KeyWordSuffix', description='Specifies whether the keyword is the suffix.', example='false'),
  lang?: string(name='Lang', description='The language of the error message to return if the request fails. Valid values:

*   **zh**: Chinese.
*   **en**: English.

Default value: **en**.', example='en'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.', example='50'),
  productDomainType?: string(name='ProductDomainType', description='The type of the domain name. Valid values:

*   **New gTLD**
*   **gTLD**
*   **ccTLD**
*   **other**', example='gTLD'),
  resourceGroupId?: string(name='ResourceGroupId', description='The ID of the resource group.', example='rg-acfmw6bpc6n7zai'),
  scrollId?: string(name='ScrollId', description='The scroll ID. This parameter is a technical parameter.', example='test'),
  startExpirationDate?: long(name='StartExpirationDate', description='The beginning of the time range to query domain names based on expiration dates. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1541520000000'),
  startLength?: int32(name='StartLength', description='The start of the domain name length to query.', example='0'),
  startRegistrationDate?: long(name='StartRegistrationDate', description='The beginning of the time range to query domain names based on registration dates. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1541520000000'),
  suffixs?: string(name='Suffixs', description='The suffixes of domain names to be queried. Separate multiple suffixes with commas (,).', example='com'),
  tradeType?: int32(name='TradeType', description='The publishing status of the domain name. Valid values:

*   **2**: The domain name is published at a fixed price.
*   **3**: The domain name is published with the price negotiable.
*   **4**: The domain name is published for bidding.
*   **6**: The domain name is published with price push.
*   **-1**: The domain name is not published.', example='-1'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client. Set the value to **127.0.0.1**.', example='127.0.0.1'),
}

model ScrollDomainListResponseBody = {
  data?: {
    domain?: [ 
    {
      dnsList?: {
        dns?: [ string ](name='Dns')
      }(name='DnsList', description='The Domain Name System (DNS) servers of the domain name.'),
      domainAuditStatus?: string(name='DomainAuditStatus', description='The status of real-name verification for the domain name. Valid values:

*   **FAILED**: Real-name verification for the domain name fails.
*   **SUCCEED**: Real-name verification for the domain name is successful.
*   **NONAUDIT**: Real-name verification for the domain name is not performed.
*   **AUDITING**: Real-name verification for the domain name is in progress.', example='NONAUDIT'),
      domainGroupId?: string(name='DomainGroupId', description='The ID of the domain name group.', example='1234'),
      domainGroupName?: string(name='DomainGroupName', description='The name of the domain name group.', example='test group'),
      domainName?: string(name='DomainName', description='The domain name.', example='example.com'),
      domainStatus?: string(name='DomainStatus', description='The status of the domain name. Valid values:

*   **1**: The domain name needs to be renewed.
*   **2**: The domain name needs to be redeemed.
*   **3**: The domain name is normal.
*   **4**: The domain name is being transferred out.
*   **5**: The information about the domain name registrant is being modified.
*   **6**: Real-name verification is not performed on the domain name.
*   **7**: Real-name verification for the domain name fails.
*   **8**: The real-name verification is being reviewed.', example='3'),
      domainType?: string(name='DomainType', description='The type of the domain name. Valid values:

*   **New gTLD**
*   **gTLD**
*   **ccTLD**', example='gTLD'),
      email?: string(name='Email', description='The email address.', example='username@example.com'),
      expirationCurrDateDiff?: int32(name='ExpirationCurrDateDiff', description='The number of days from the expiration date of the domain name to the current date.', example='10'),
      expirationDate?: string(name='ExpirationDate', description='The time when the domain name expires.', example='2019-02-15 17:30:35'),
      expirationDateLong?: long(name='ExpirationDateLong', description='The time when the domain name expires. This value is a UNIX timestamp representing the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1550223035000'),
      expirationDateStatus?: string(name='ExpirationDateStatus', description='Indicates whether the domain name expires. Valid values:

*   **1**: The domain name does not expire.
*   **2**: The domain name expires.', example='1'),
      instanceId?: string(name='InstanceId', description='The instance ID of the domain name.', example='S1234'),
      premium?: boolean(name='Premium', description='Indicates whether the domain name is a premium domain name.', example='false'),
      productId?: string(name='ProductId', description='The service ID.', example='2a'),
      registrantOrganization?: string(name='RegistrantOrganization', description='The registrant of the domain name.', example='alibaba cloud'),
      registrantType?: string(name='RegistrantType', description='The registration type of the domain name. Valid values:

*   **1**: individual.
*   **2**: enterprise.', example='1'),
      registrationDate?: string(name='RegistrationDate', description='The time when the domain name was registered.', example='2017-02-15 00:00:00'),
      registrationDateLong?: long(name='RegistrationDateLong', description='The time when the domain name was registered. This value is a UNIX timestamp that indicates the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC.', example='1487088000000'),
      remark?: string(name='Remark', description='The remarks on the domain name.', example='test domain'),
      resourceGroupId?: string(name='ResourceGroupId', description='The ID of the resource group.', example='rg-aek2yyciz557g3q'),
      tag?: {
        tag?: [ 
        {
          key?: string(name='Key', description='The tag key.', example='testKey'),
          value?: string(name='Value', description='The tag value.', example='testValue'),
        }
      ](name='Tag')
      }(name='Tag', description='The resource tag.'),
      zhRegistrantOrganization?: string(name='ZhRegistrantOrganization', description='The Chinese name of the domain name registrant.', example='阿里云'),
    }
  ](name='Domain')
  }(name='Data', description='The domain names.'),
  pageSize?: int32(name='PageSize', description='The number of entries per page.', example='50'),
  requestId?: string(name='RequestId', description='The request ID.', example='722AB7F5-61F0-408C-A012-4784AFD34083'),
  scrollId?: string(name='ScrollId', description='The scroll ID.', example='test'),
  totalItemNum?: int32(name='TotalItemNum', description='The number of remaining domain names to be queried.', example='200'),
}

model ScrollDomainListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ScrollDomainListResponseBody(name='body'),
}

/**
 * @summary Traverses domain names.
 *
 * @description If you have a large number of domain names, a slow response may occur when you call an API operation to query domain names. In this case, you can call this operation to query domain names more quickly. When you call this operation for the first time, specify the request parameters except ScrollId. A scroll ID is returned without other data. In the second request, use the scroll ID obtained from the previous response. In subsequent requests, the newly specified request parameters do not take effect, and the request parameters that are specified in the first request prevail.
 *
 * @param request ScrollDomainListRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return ScrollDomainListResponse
 */
async function scrollDomainListWithOptions(request: ScrollDomainListRequest, runtime: Util.RuntimeOptions): ScrollDomainListResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.domainStatus)) {
    query['DomainStatus'] = request.domainStatus;
  }
  if (!Util.isUnset(request.endExpirationDate)) {
    query['EndExpirationDate'] = request.endExpirationDate;
  }
  if (!Util.isUnset(request.endLength)) {
    query['EndLength'] = request.endLength;
  }
  if (!Util.isUnset(request.endRegistrationDate)) {
    query['EndRegistrationDate'] = request.endRegistrationDate;
  }
  if (!Util.isUnset(request.excluded)) {
    query['Excluded'] = request.excluded;
  }
  if (!Util.isUnset(request.excludedPrefix)) {
    query['ExcludedPrefix'] = request.excludedPrefix;
  }
  if (!Util.isUnset(request.excludedSuffix)) {
    query['ExcludedSuffix'] = request.excludedSuffix;
  }
  if (!Util.isUnset(request.form)) {
    query['Form'] = request.form;
  }
  if (!Util.isUnset(request.keyWord)) {
    query['KeyWord'] = request.keyWord;
  }
  if (!Util.isUnset(request.keyWordPrefix)) {
    query['KeyWordPrefix'] = request.keyWordPrefix;
  }
  if (!Util.isUnset(request.keyWordSuffix)) {
    query['KeyWordSuffix'] = request.keyWordSuffix;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.pageSize)) {
    query['PageSize'] = request.pageSize;
  }
  if (!Util.isUnset(request.productDomainType)) {
    query['ProductDomainType'] = request.productDomainType;
  }
  if (!Util.isUnset(request.resourceGroupId)) {
    query['ResourceGroupId'] = request.resourceGroupId;
  }
  if (!Util.isUnset(request.scrollId)) {
    query['ScrollId'] = request.scrollId;
  }
  if (!Util.isUnset(request.startExpirationDate)) {
    query['StartExpirationDate'] = request.startExpirationDate;
  }
  if (!Util.isUnset(request.startLength)) {
    query['StartLength'] = request.startLength;
  }
  if (!Util.isUnset(request.startRegistrationDate)) {
    query['StartRegistrationDate'] = request.startRegistrationDate;
  }
  if (!Util.isUnset(request.suffixs)) {
    query['Suffixs'] = request.suffixs;
  }
  if (!Util.isUnset(request.tradeType)) {
    query['TradeType'] = request.tradeType;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'ScrollDomainList',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary Traverses domain names.
 *
 * @description If you have a large number of domain names, a slow response may occur when you call an API operation to query domain names. In this case, you can call this operation to query domain names more quickly. When you call this operation for the first time, specify the request parameters except ScrollId. A scroll ID is returned without other data. In the second request, use the scroll ID obtained from the previous response. In subsequent requests, the newly specified request parameters do not take effect, and the request parameters that are specified in the first request prevail.
 *
 * @param request ScrollDomainListRequest
 * @return ScrollDomainListResponse
 */
async function scrollDomainList(request: ScrollDomainListRequest): ScrollDomainListResponse {
  var runtime = new Util.RuntimeOptions{};
  return scrollDomainListWithOptions(request, runtime);
}

model SetDefaultRegistrantProfileRequest {
  registrantProfileId?: long(name='RegistrantProfileId', description='This parameter is required.', example='1234567'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SetDefaultRegistrantProfileResponseBody = {
  requestId?: string(name='RequestId', example='4D73432C-7600-4779-ACBB-C3B5CA145D32'),
}

model SetDefaultRegistrantProfileResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SetDefaultRegistrantProfileResponseBody(name='body'),
}

/**
 * @summary 设置默认模板
 *
 * @param request SetDefaultRegistrantProfileRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SetDefaultRegistrantProfileResponse
 */
async function setDefaultRegistrantProfileWithOptions(request: SetDefaultRegistrantProfileRequest, runtime: Util.RuntimeOptions): SetDefaultRegistrantProfileResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.registrantProfileId)) {
    query['RegistrantProfileId'] = request.registrantProfileId;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SetDefaultRegistrantProfile',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 设置默认模板
 *
 * @param request SetDefaultRegistrantProfileRequest
 * @return SetDefaultRegistrantProfileResponse
 */
async function setDefaultRegistrantProfile(request: SetDefaultRegistrantProfileRequest): SetDefaultRegistrantProfileResponse {
  var runtime = new Util.RuntimeOptions{};
  return setDefaultRegistrantProfileWithOptions(request, runtime);
}

model SetupDomainAutoRenewRequest {
  instanceId?: string(name='InstanceId', description='This parameter is required.', example='S2019270W570xxxx'),
  operation?: string(name='Operation', description='This parameter is required.', example='SET'),
}

model SetupDomainAutoRenewResponseBody = {
  requestId?: string(name='RequestId', example='8fc97e44-837a-447d-ac61-ea28d2fe8a38'),
  result?: boolean(name='Result', example='true'),
}

model SetupDomainAutoRenewResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SetupDomainAutoRenewResponseBody(name='body'),
}

/**
 * @summary 域名设置自动续费
 *
 * @param request SetupDomainAutoRenewRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SetupDomainAutoRenewResponse
 */
async function setupDomainAutoRenewWithOptions(request: SetupDomainAutoRenewRequest, runtime: Util.RuntimeOptions): SetupDomainAutoRenewResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.instanceId)) {
    query['InstanceId'] = request.instanceId;
  }
  if (!Util.isUnset(request.operation)) {
    query['Operation'] = request.operation;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SetupDomainAutoRenew',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 域名设置自动续费
 *
 * @param request SetupDomainAutoRenewRequest
 * @return SetupDomainAutoRenewResponse
 */
async function setupDomainAutoRenew(request: SetupDomainAutoRenewRequest): SetupDomainAutoRenewResponse {
  var runtime = new Util.RuntimeOptions{};
  return setupDomainAutoRenewWithOptions(request, runtime);
}

model SubmitDomainSpecialBizCredentialsRequest {
  bizId?: long(name='BizId', description='The business ID.', example='219'),
  credentials?: string(name='Credentials', description='The certificate information.'),
  extend?: string(name='Extend', description='The extended information.', example='{\\\\"addTransferLock\\\\":true}'),
  userClientIp?: string(name='UserClientIp', description='The IP address of the client.', example='127.0.0.1'),
}

model SubmitDomainSpecialBizCredentialsResponseBody = {
  allowRetry?: boolean(name='AllowRetry', description='Indicates whether retries are allowed.', example='False'),
  appName?: string(name='AppName', description='The name of the application for which the error code is returned.', example='test-com'),
  dynamicCode?: string(name='DynamicCode', description='The dynamic error code.', example='-'),
  dynamicMessage?: string(name='DynamicMessage', description='The dynamic error message.', example='-'),
  errorArgs?: [ any ](name='ErrorArgs', description='The array of error parameters that are returned.'),
  errorCode?: string(name='ErrorCode', description='The error code.'),
  errorMsg?: string(name='ErrorMsg', description='The error message.', example='110001'),
  httpStatusCode?: int32(name='HttpStatusCode', description='The HTTP status code that is directly returned.', example='200'),
  module?: any(name='Module', description='The returned data.', example='-'),
  requestId?: string(name='RequestId', description='The request ID.', example='A83E1D74-E46B-505C-947A-8C6B7E41C011'),
  success?: boolean(name='Success', description='Indicates whether the request is successful. Valid values:

*   **true**
*   **false**', example='True'),
  synchro?: boolean(name='Synchro', description='Indicates whether to perform synchronous processing.', example='True'),
}

model SubmitDomainSpecialBizCredentialsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SubmitDomainSpecialBizCredentialsResponseBody(name='body'),
}

/**
 * @summary 域名特殊业务提交资料
 *
 * @param request SubmitDomainSpecialBizCredentialsRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SubmitDomainSpecialBizCredentialsResponse
 */
async function submitDomainSpecialBizCredentialsWithOptions(request: SubmitDomainSpecialBizCredentialsRequest, runtime: Util.RuntimeOptions): SubmitDomainSpecialBizCredentialsResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.bizId)) {
    body['BizId'] = request.bizId;
  }
  if (!Util.isUnset(request.credentials)) {
    body['Credentials'] = request.credentials;
  }
  if (!Util.isUnset(request.extend)) {
    body['Extend'] = request.extend;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'SubmitDomainSpecialBizCredentials',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 域名特殊业务提交资料
 *
 * @param request SubmitDomainSpecialBizCredentialsRequest
 * @return SubmitDomainSpecialBizCredentialsResponse
 */
async function submitDomainSpecialBizCredentials(request: SubmitDomainSpecialBizCredentialsRequest): SubmitDomainSpecialBizCredentialsResponse {
  var runtime = new Util.RuntimeOptions{};
  return submitDomainSpecialBizCredentialsWithOptions(request, runtime);
}

model SubmitEmailVerificationRequest {
  email?: string(name='Email', description='This parameter is required.', example='username@example.com'),
  lang?: string(name='Lang', example='en'),
  sendIfExist?: boolean(name='SendIfExist', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model SubmitEmailVerificationResponseBody = {
  existList?: [ 
    {
      code?: string(name='Code', example='SendTokenQuotaExceeded'),
      email?: string(name='Email', example='username@example.com'),
      message?: string(name='Message', example='The maximum number of attempts allowed to send the email verification link is exceeded.'),
    }
  ](name='ExistList'),
  failList?: [ 
    {
      code?: string(name='Code', example='SendTokenQuotaExceeded'),
      email?: string(name='Email', example='username@example.com'),
      message?: string(name='Message', example='The maximum number of attempts allowed to send the email verification link is exceeded'),
    }
  ](name='FailList'),
  requestId?: string(name='RequestId', example='E2A8A5EF-DF8A-4C48-8FD4-9F6BD71AB26D'),
  successList?: [ 
    {
      code?: string(name='Code', example='Success'),
      email?: string(name='Email', example='username@example.com'),
      message?: string(name='Message', example='Success'),
    }
  ](name='SuccessList'),
}

model SubmitEmailVerificationResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SubmitEmailVerificationResponseBody(name='body'),
}

/**
 * @summary 提交邮箱验证
 *
 * @param request SubmitEmailVerificationRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SubmitEmailVerificationResponse
 */
async function submitEmailVerificationWithOptions(request: SubmitEmailVerificationRequest, runtime: Util.RuntimeOptions): SubmitEmailVerificationResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.sendIfExist)) {
    query['SendIfExist'] = request.sendIfExist;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SubmitEmailVerification',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 提交邮箱验证
 *
 * @param request SubmitEmailVerificationRequest
 * @return SubmitEmailVerificationResponse
 */
async function submitEmailVerification(request: SubmitEmailVerificationRequest): SubmitEmailVerificationResponse {
  var runtime = new Util.RuntimeOptions{};
  return submitEmailVerificationWithOptions(request, runtime);
}

model SubmitOperationAuditInfoRequest {
  auditInfo?: string(name='AuditInfo'),
  auditType?: int32(name='AuditType', description='This parameter is required.', example='1'),
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com,example.org'),
  id?: long(name='Id', example='1'),
  lang?: string(name='Lang', example='en'),
}

model SubmitOperationAuditInfoResponseBody = {
  id?: long(name='Id', example='1'),
  requestId?: string(name='RequestId', example='9DKCF6F8-243C-40EC-8035-4B12FEFD7C22'),
}

model SubmitOperationAuditInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SubmitOperationAuditInfoResponseBody(name='body'),
}

/**
 * @summary 提交申请信息
 *
 * @param request SubmitOperationAuditInfoRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SubmitOperationAuditInfoResponse
 */
async function submitOperationAuditInfoWithOptions(request: SubmitOperationAuditInfoRequest, runtime: Util.RuntimeOptions): SubmitOperationAuditInfoResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditInfo)) {
    query['AuditInfo'] = request.auditInfo;
  }
  if (!Util.isUnset(request.auditType)) {
    query['AuditType'] = request.auditType;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.id)) {
    query['Id'] = request.id;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SubmitOperationAuditInfo',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 提交申请信息
 *
 * @param request SubmitOperationAuditInfoRequest
 * @return SubmitOperationAuditInfoResponse
 */
async function submitOperationAuditInfo(request: SubmitOperationAuditInfoRequest): SubmitOperationAuditInfoResponse {
  var runtime = new Util.RuntimeOptions{};
  return submitOperationAuditInfoWithOptions(request, runtime);
}

model SubmitOperationCredentialsRequest {
  auditRecordId?: long(name='AuditRecordId', example='1'),
  auditType?: int32(name='AuditType', example='1'),
  credentials?: string(name='Credentials'),
  lang?: string(name='Lang', example='en'),
  regType?: int32(name='RegType', example='1'),
}

model SubmitOperationCredentialsResponseBody = {
  requestId?: string(name='RequestId', example='9DFCF6F8-243C-40EC-8035-4B12FEFX7D98'),
}

model SubmitOperationCredentialsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SubmitOperationCredentialsResponseBody(name='body'),
}

/**
 * @summary 提交证件资料
 *
 * @param request SubmitOperationCredentialsRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return SubmitOperationCredentialsResponse
 */
async function submitOperationCredentialsWithOptions(request: SubmitOperationCredentialsRequest, runtime: Util.RuntimeOptions): SubmitOperationCredentialsResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.auditRecordId)) {
    query['AuditRecordId'] = request.auditRecordId;
  }
  if (!Util.isUnset(request.auditType)) {
    query['AuditType'] = request.auditType;
  }
  if (!Util.isUnset(request.credentials)) {
    query['Credentials'] = request.credentials;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.regType)) {
    query['RegType'] = request.regType;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'SubmitOperationCredentials',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 提交证件资料
 *
 * @param request SubmitOperationCredentialsRequest
 * @return SubmitOperationCredentialsResponse
 */
async function submitOperationCredentials(request: SubmitOperationCredentialsRequest): SubmitOperationCredentialsResponse {
  var runtime = new Util.RuntimeOptions{};
  return submitOperationCredentialsWithOptions(request, runtime);
}

model TransferInCheckMailTokenRequest {
  lang?: string(name='Lang', example='en'),
  token?: string(name='Token', description='This parameter is required.', example='3bdbaa0e-faa2-4ad2-98f4-bcfeb0237054'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model TransferInCheckMailTokenResponseBody = {
  failList?: {
    failDomain?: [ string ](name='FailDomain')
  }(name='FailList'),
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
  successList?: {
    successDomain?: [ string ](name='SuccessDomain')
  }(name='SuccessList'),
}

model TransferInCheckMailTokenResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: TransferInCheckMailTokenResponseBody(name='body'),
}

/**
 * @param request TransferInCheckMailTokenRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return TransferInCheckMailTokenResponse
 */
async function transferInCheckMailTokenWithOptions(request: TransferInCheckMailTokenRequest, runtime: Util.RuntimeOptions): TransferInCheckMailTokenResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.token)) {
    query['Token'] = request.token;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'TransferInCheckMailToken',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request TransferInCheckMailTokenRequest
 * @return TransferInCheckMailTokenResponse
 */
async function transferInCheckMailToken(request: TransferInCheckMailTokenRequest): TransferInCheckMailTokenResponse {
  var runtime = new Util.RuntimeOptions{};
  return transferInCheckMailTokenWithOptions(request, runtime);
}

model TransferInReenterTransferAuthorizationCodeRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  transferAuthorizationCode?: string(name='TransferAuthorizationCode', description='This parameter is required.', example='testCode'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model TransferInReenterTransferAuthorizationCodeResponseBody = {
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
}

model TransferInReenterTransferAuthorizationCodeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: TransferInReenterTransferAuthorizationCodeResponseBody(name='body'),
}

/**
 * @param request TransferInReenterTransferAuthorizationCodeRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return TransferInReenterTransferAuthorizationCodeResponse
 */
async function transferInReenterTransferAuthorizationCodeWithOptions(request: TransferInReenterTransferAuthorizationCodeRequest, runtime: Util.RuntimeOptions): TransferInReenterTransferAuthorizationCodeResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.transferAuthorizationCode)) {
    query['TransferAuthorizationCode'] = request.transferAuthorizationCode;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'TransferInReenterTransferAuthorizationCode',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request TransferInReenterTransferAuthorizationCodeRequest
 * @return TransferInReenterTransferAuthorizationCodeResponse
 */
async function transferInReenterTransferAuthorizationCode(request: TransferInReenterTransferAuthorizationCodeRequest): TransferInReenterTransferAuthorizationCodeResponse {
  var runtime = new Util.RuntimeOptions{};
  return transferInReenterTransferAuthorizationCodeWithOptions(request, runtime);
}

model TransferInRefetchWhoisEmailRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model TransferInRefetchWhoisEmailResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
}

model TransferInRefetchWhoisEmailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: TransferInRefetchWhoisEmailResponseBody(name='body'),
}

/**
 * @param request TransferInRefetchWhoisEmailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return TransferInRefetchWhoisEmailResponse
 */
async function transferInRefetchWhoisEmailWithOptions(request: TransferInRefetchWhoisEmailRequest, runtime: Util.RuntimeOptions): TransferInRefetchWhoisEmailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'TransferInRefetchWhoisEmail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request TransferInRefetchWhoisEmailRequest
 * @return TransferInRefetchWhoisEmailResponse
 */
async function transferInRefetchWhoisEmail(request: TransferInRefetchWhoisEmailRequest): TransferInRefetchWhoisEmailResponse {
  var runtime = new Util.RuntimeOptions{};
  return transferInRefetchWhoisEmailWithOptions(request, runtime);
}

model TransferInResendMailTokenRequest {
  domainName?: string(name='DomainName', description='This parameter is required.', example='example.com'),
  lang?: string(name='Lang', example='en'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model TransferInResendMailTokenResponseBody = {
  requestId?: string(name='RequestId', example='AF7D4DCE-0776-47F2-A9B2-6FB85A87AA60'),
}

model TransferInResendMailTokenResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: TransferInResendMailTokenResponseBody(name='body'),
}

/**
 * @param request TransferInResendMailTokenRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return TransferInResendMailTokenResponse
 */
async function transferInResendMailTokenWithOptions(request: TransferInResendMailTokenRequest, runtime: Util.RuntimeOptions): TransferInResendMailTokenResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'TransferInResendMailToken',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @param request TransferInResendMailTokenRequest
 * @return TransferInResendMailTokenResponse
 */
async function transferInResendMailToken(request: TransferInResendMailTokenRequest): TransferInResendMailTokenResponse {
  var runtime = new Util.RuntimeOptions{};
  return transferInResendMailTokenWithOptions(request, runtime);
}

model UpdateDomainToDomainGroupRequest {
  dataSource?: int32(name='DataSource', description='This parameter is required.', example='1'),
  domainGroupId?: long(name='DomainGroupId', description='This parameter is required.', example='1234'),
  domainName?: [ string ](name='DomainName', example='example.com'),
  fileToUpload?: string(name='FileToUpload', example='dGVzdA=='),
  lang?: string(name='Lang', example='en'),
  replace?: boolean(name='Replace', description='This parameter is required.', example='false'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model UpdateDomainToDomainGroupResponseBody = {
  requestId?: string(name='RequestId', example='40F46D3D-F4F3-4CCB-AC30-2DD20E32E528'),
}

model UpdateDomainToDomainGroupResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateDomainToDomainGroupResponseBody(name='body'),
}

/**
 * @summary 向分组设置域名
 *
 * @param request UpdateDomainToDomainGroupRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateDomainToDomainGroupResponse
 */
async function updateDomainToDomainGroupWithOptions(request: UpdateDomainToDomainGroupRequest, runtime: Util.RuntimeOptions): UpdateDomainToDomainGroupResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.dataSource)) {
    query['DataSource'] = request.dataSource;
  }
  if (!Util.isUnset(request.domainGroupId)) {
    query['DomainGroupId'] = request.domainGroupId;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.replace)) {
    query['Replace'] = request.replace;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var body : map[string]any = {};
  if (!Util.isUnset(request.fileToUpload)) {
    body['FileToUpload'] = request.fileToUpload;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApi.Params{
    action = 'UpdateDomainToDomainGroup',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 向分组设置域名
 *
 * @param request UpdateDomainToDomainGroupRequest
 * @return UpdateDomainToDomainGroupResponse
 */
async function updateDomainToDomainGroup(request: UpdateDomainToDomainGroupRequest): UpdateDomainToDomainGroupResponse {
  var runtime = new Util.RuntimeOptions{};
  return updateDomainToDomainGroupWithOptions(request, runtime);
}

model VerifyContactFieldRequest {
  address?: string(name='Address', example='Rd. xitucheng'),
  city?: string(name='City', example='Bei jing'),
  country?: string(name='Country', example='CN'),
  domainName?: string(name='DomainName', example='example.com'),
  email?: string(name='Email', example='username@example.com'),
  lang?: string(name='Lang', example='en'),
  postalCode?: string(name='PostalCode'),
  province?: string(name='Province', example='Bei jing'),
  registrantName?: string(name='RegistrantName', example='wang xian sheng'),
  registrantOrganization?: string(name='RegistrantOrganization', example='wang xian sheng'),
  registrantType?: string(name='RegistrantType', example='1'),
  telArea?: string(name='TelArea', example='86'),
  telExt?: string(name='TelExt', example='01'),
  telephone?: string(name='Telephone', example='1390000****'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
  zhAddress?: string(name='ZhAddress'),
  zhCity?: string(name='ZhCity'),
  zhProvince?: string(name='ZhProvince'),
  zhRegistrantName?: string(name='ZhRegistrantName'),
  zhRegistrantOrganization?: string(name='ZhRegistrantOrganization'),
}

model VerifyContactFieldResponseBody = {
  requestId?: string(name='RequestId', example='ABAC3BAC-FCFA-4DAE-B47C-FA4105CB07C6'),
}

model VerifyContactFieldResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: VerifyContactFieldResponseBody(name='body'),
}

/**
 * @summary 校验联系人信息
 *
 * @param request VerifyContactFieldRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return VerifyContactFieldResponse
 */
async function verifyContactFieldWithOptions(request: VerifyContactFieldRequest, runtime: Util.RuntimeOptions): VerifyContactFieldResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.address)) {
    query['Address'] = request.address;
  }
  if (!Util.isUnset(request.city)) {
    query['City'] = request.city;
  }
  if (!Util.isUnset(request.country)) {
    query['Country'] = request.country;
  }
  if (!Util.isUnset(request.domainName)) {
    query['DomainName'] = request.domainName;
  }
  if (!Util.isUnset(request.email)) {
    query['Email'] = request.email;
  }
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.postalCode)) {
    query['PostalCode'] = request.postalCode;
  }
  if (!Util.isUnset(request.province)) {
    query['Province'] = request.province;
  }
  if (!Util.isUnset(request.registrantName)) {
    query['RegistrantName'] = request.registrantName;
  }
  if (!Util.isUnset(request.registrantOrganization)) {
    query['RegistrantOrganization'] = request.registrantOrganization;
  }
  if (!Util.isUnset(request.registrantType)) {
    query['RegistrantType'] = request.registrantType;
  }
  if (!Util.isUnset(request.telArea)) {
    query['TelArea'] = request.telArea;
  }
  if (!Util.isUnset(request.telExt)) {
    query['TelExt'] = request.telExt;
  }
  if (!Util.isUnset(request.telephone)) {
    query['Telephone'] = request.telephone;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  if (!Util.isUnset(request.zhAddress)) {
    query['ZhAddress'] = request.zhAddress;
  }
  if (!Util.isUnset(request.zhCity)) {
    query['ZhCity'] = request.zhCity;
  }
  if (!Util.isUnset(request.zhProvince)) {
    query['ZhProvince'] = request.zhProvince;
  }
  if (!Util.isUnset(request.zhRegistrantName)) {
    query['ZhRegistrantName'] = request.zhRegistrantName;
  }
  if (!Util.isUnset(request.zhRegistrantOrganization)) {
    query['ZhRegistrantOrganization'] = request.zhRegistrantOrganization;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'VerifyContactField',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 校验联系人信息
 *
 * @param request VerifyContactFieldRequest
 * @return VerifyContactFieldResponse
 */
async function verifyContactField(request: VerifyContactFieldRequest): VerifyContactFieldResponse {
  var runtime = new Util.RuntimeOptions{};
  return verifyContactFieldWithOptions(request, runtime);
}

model VerifyEmailRequest {
  lang?: string(name='Lang', example='en'),
  token?: string(name='Token', description='This parameter is required.', example='0b32247496409441e9e179ea7c2e0****'),
  userClientIp?: string(name='UserClientIp', example='127.0.0.1'),
}

model VerifyEmailResponseBody = {
  requestId?: string(name='RequestId', example='FD3AD289-83EE-4E32-803A-CF1B3A8EEE64'),
}

model VerifyEmailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: VerifyEmailResponseBody(name='body'),
}

/**
 * @summary 验证邮箱Token
 *
 * @param request VerifyEmailRequest
 * @param runtime runtime options for this request RuntimeOptions
 * @return VerifyEmailResponse
 */
async function verifyEmailWithOptions(request: VerifyEmailRequest, runtime: Util.RuntimeOptions): VerifyEmailResponse {
  Util.validateModel(request);
  var query = {};
  if (!Util.isUnset(request.lang)) {
    query['Lang'] = request.lang;
  }
  if (!Util.isUnset(request.token)) {
    query['Token'] = request.token;
  }
  if (!Util.isUnset(request.userClientIp)) {
    query['UserClientIp'] = request.userClientIp;
  }
  var req = new OpenApi.OpenApiRequest{ 
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApi.Params{
    action = 'VerifyEmail',
    version = '2018-01-29',
    protocol = 'HTTPS',
    pathname = '/',
    method = 'POST',
    authType = 'AK',
    style = 'RPC',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  return callApi(params, req, runtime);
}

/**
 * @summary 验证邮箱Token
 *
 * @param request VerifyEmailRequest
 * @return VerifyEmailResponse
 */
async function verifyEmail(request: VerifyEmailRequest): VerifyEmailResponse {
  var runtime = new Util.RuntimeOptions{};
  return verifyEmailWithOptions(request, runtime);
}

